繁体   English   中英

在php中调用静态属性

[英]Call static property in php

我有静态属性关闭类。

如果我在变量内复制属性并调用,它将不会产生任何错误。 但是,如果我直接调用静态属性,则会出现致命错误Function name must be a string

<?php
class Ctest{
    static $sysClassReturnObj;

    static function test(){
        self::$sysClassReturnObj = function(){};
        self::$sysClassReturnObj();
    }
}

Ctest::test();

为什么我不能打电话以及在哪里可以了解到这种行为?

这是一种PHP主义。 ()绑定比::绑定更紧密,因此您的函数调用的执行等效于

self::($var());

这使$var成为未定义的局部变量,而不是类属性。

请注意此末尾的警告:

marc@panic:~$ cat z.php
<?php

class Ctest {
        static $foo;
        static function test() {
                self::$foo = function() {};
                self::$foo();
        }
}

Ctest::test();

marc@panic:~$ php z.php
PHP Notice:  Undefined variable: foo in /home/marc/z.php on line 7
PHP Fatal error:  Function name must be a string in /home/marc/z.php on line 7

是的,您必须与

$temp = self::$sysClassReturnObj;
$temp();

我认为您的问题来自于此:self :: $ sysClassReturnObj();。 您已经声明了一个变量(静态$ sysClassReturnObj;),并将其称为函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM