从php中的函数外部调用函数

时间:2015-05-09 15:20:38

标签: php zend-framework

通常,函数是从函数内部调用的,但是如果我想调用类中的函数但是在函数外部,在php中。 [编辑]:
将函数x()更改为静态函数x()
----
我的代码是:

class MyClass {
    $a = Zend_Registry::get("dbCred");
    static function x(){ ... }
}

这给了我以下错误:

parse error, expecting `"function (T_FUNCTION)"' in MyClass.php on line 12

[编辑]: 我实际上想从函数x中访问$ a的值。

2 个答案:

答案 0 :(得分:1)

您无法在编译时调用函数(当PHP程序正在读取和编译代码时)。您只能在运行时(正在执行代码时)调用函数。

在这种情况下,您可以在类'constructor:

中调用该函数
class MyClass {
    public $a;
    function __construct() {
        $this->a = Zend_Registry::get("dbCred");
    }
}

由于x()方法是静态的,您也可以将成员设置为静态,然后在a方法中延迟加载凭据,如下所示:

class MyClass {
    public static $a;
    public static function a() {
        if (self::$a === null) {
            self::$a = Zend_Registry::get("dbCred");
        }
        // Do you stuff...
    }
}

答案 1 :(得分:0)

更好的解决方法是,

class MyClass {
    protected static $a;

    static function x(){
        self::$a = Zend_Registry::get("dbCred");
        return self::$a;
    }
}

创建像$ a这样的成员变量,并根据需要从函数中访问它。