在类外调用 Wordpress 函数


Calling a Wordpress function out of class

我有一个 woocommerce 插件,它有一个类Foo

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.

在调用类的方法之前,必须实例化类:

$foo = new WC_Foo();
$foo->sayHello();

或者,如果您的 PHP 版本高于 5.4,您可以执行以下操作:

(new WC_Foo())->sayHello();

如果要在类中调用方法$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();

这可能不是完整的代码,所以你那里的东西很奇怪,但让我们开始吧。

由于您有一个函数来初始化您的对象,您可能希望至少返回该实例。此代码可能有助于您了解:

function init_foo(){
    class foo{
        function say(){
            echo 'hello';
        }
    }
    $foo1 = new Foo();
    return $foo1;
}
function bar($foo3){
    $foo3->say();
}
$foo2 = init_foo();
bar($foo2);

因此,首先我们创建对象并返回它。然后我们将其注入到 bar 函数中,之后只需要调用该方法即可。(我使用了不同的var名称,因此更容易理解范围)