Php错误,当没有类作用域活动时,无法访问self ::

时间:2015-03-13 19:55:40

标签: php

人们在我的网站上报告此问题。但代码如下:

    $class = get_called_class();
    $instance = new \ReflectionClass($class);

    $class::$List = array_flip($instance->getConstants()); // Error here

我绝对不会自己弄错。

有人知道发生了什么吗?

2 个答案:

答案 0 :(得分:2)

必须在类本身内调用

get_called_class()。我猜您没有看到错误,因为您的本地主机上有error_reporting(0)或类似内容。

class Test {
    static public function test() {
        echo get_called_class(); //OK
    }
}

<?
echo get_called_class(); //Not OK
?>

<强>更新即可。尤里卡!

$class = get_called_class();
$instance = new \ReflectionClass($class);
$class::$List = array_flip($instance->getConstants()); // Error here

应该是

...
$instance::List = array_flip($instance->getConstants()); 

您正尝试在字符串上设置静态不存在的值。 get_called_class()返回一个字符串,而不是一个对象,当然不是static class

答案 1 :(得分:0)

在某些版本的PHP 5.3.x中,似乎getConstants已损坏。