[英]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.