我有一个有Foo
课程的woocommerce插件:
function wc_foo_init(){
class WC_Foo extends WC_Shipping_Method{
$var=get_option(); //gets an option for this session
function sayHello(){
echo $var;
}
new WC_Foo();
}
我想从sayHello()
班级致电Foo
:
function bar(){
WC_Foo->sayHello();
}
但是我收到了这个错误:
Fatal error: Call to a member function `sayHello` on a non-object.
答案 0 :(得分:0)
如果要在类
中调用方法,请使用$ this选择器function bar(){
$this->sayHello();
}
如果要从其他地方调用该方法, 你需要实例化这样的类:
$object = new WC_Foo();
$object->sayHello();
或者让方法像这样静态:
public static function sayHello(){
echo "Hello";
}
并称之为:
WC_Foo::sayHello();
// this way you dont need $object = new WC_Foo();
答案 1 :(得分:0)
您必须在调用其方法之前实例化类:
$foo = new WC_Foo();
$foo->sayHello();
或者如果你的php版本大于5.4,你可以这样做:
(new WC_Foo())->sayHello();
答案 2 :(得分:0)
这可能不是完整的代码,所以你在那里很奇怪,但是我们走了。
由于您具有初始化对象的功能,因此您可能希望至少返回该实例。此代码可能有助于您理解:
<?xml version='1.0' encoding='windows-1252'?>
<ext:BookingExtraction>
<Booking><Code>2016Z00258</Code><Advertiser><Code>00123</Code<Name>LOUIS VUITTON</Name></Advertiser></Booking>
<Booking><Code>2016Z00259</Code><Advertiser><Code>00124</Code<Name>Adidas</Name></Advertiser></Booking>
</ext:BookingExtraction>
所以,首先我们创建对象并返回它。然后我们将它注入bar函数,之后需要调用该方法。 (我使用了不同的var名称,因此更容易理解范围)