php.net手册没有理解类范围解析运算符::

时间:2016-10-17 16:35:10

标签: php class object scope operator-keyword

试图学习php并抓住另一个障碍

好的,这就是他们在php.net上关于::

的说法

范围解析运算符(也称为Paamayim Nekudotayim)或简单来说,双冒号,是一个允许访问类的静态,常量和重写属性或方法的标记。

从PHP 5.3.0开始,可以使用变量引用该类。变量的值不能是关键字(例如self,parent和static)。

从类定义外部引用这些项时,请使用类的名称。

class MyClass {
    const CONST_VALUE = 'A constant value';
}

$classname = 'MyClass'; 

echo $classname::CONST_VALUE;  

echo MyClass::CONST_VALUE;
?>

现在回到上面的代码

$classname = 'MyClass';

这是一个变数!正在给A' STRING' “MyClass'!

的价值。”
echo $classname::CONST_VALUE; 

这条线如何可能!它没有任何关于这个类的事情!

基本上是一个简单易变的变量! 因此,如何通过以下方式获得能够获得类别常数的能力? 只有类似的我才能看到“我的阶级”和“我的阶级”。理论上的但是没有力量让它发生它只是一个字符串。

有人可以解释,因为我每天有100个障碍,我开始认为php刚刚组成,因为他们在其中发现了太多相互矛盾的事情。

1 个答案:

答案 0 :(得分:1)

在这种情况下,这两行基本相同。

echo $classname::CONST_VALUE;  

echo MyClass::CONST_VALUE;

PHP试图"施放"字符串"MyClass"到一个类。如果班级存在,一切都像魅力一样。

其他例子可能是:

$instance = new $classname;

其中$instanceMyClass的有效实例。

换句话说,您可以使用字符串表示替换类名。