在课堂外调用Wordpress功能

时间:2016-02-29 14:12:22

标签: php wordpress wordpress-plugin woocommerce

我有一个有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.

3 个答案:

答案 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名称,因此更容易理解范围)