php.net 手册无法理解 class 范围解析运算符 ::
php.net manual not make sense of class Scope Resolution Operator ::
尝试学习 php 并遇到了另一个障碍
好的,这就是他们在下面 php.net 上所说的关于 ::
范围解析运算符(也称为 Paamayim Nekudotayim)或更简单的术语,即双冒号,是一个允许访问 class 的静态、常量和重写属性或方法的标记。
从 PHP 5.3.0 开始,可以使用变量引用 class。变量的值不能是关键字(例如 self、parent 和 static)。
从 class 定义之外引用这些项目时,使用 class 的名称。
class MyClass {
const CONST_VALUE = 'A constant value';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE;
echo MyClass::CONST_VALUE;
?>
现在回到上面的代码
$classname = 'MyClass';
这是一个变量!被赋予 'STRING' 价值 'MyClass'!
echo $classname::CONST_VALUE;
这条线怎么可能!与此无关 CLASS!
这基本上是一个带有字符串变量的简单变量!
那么它如何神奇地获得访问 CLASS 常数的能力 ::?
我看到的唯一类似的是字符串 'MyClass' 但理论上没有权力让它发生它只是一个字符串。
有人可以解释一下吗,因为我每天遇到 100 个障碍,我开始认为 php 只是编造出来的,因为其中有太多自相矛盾的东西。
在这种情况下,这两行基本相同。
echo $classname::CONST_VALUE;
echo MyClass::CONST_VALUE;
PHP 尝试 "cast" 字符串 "MyClass"
到 Class。如果 class 存在,那么一切都很好。
其他示例可以是:
$instance = new $classname;
其中 $instance
是 MyClass
的有效实例。
换句话说,您可以用字符串表示形式替换 class 名称。
尝试学习 php 并遇到了另一个障碍
好的,这就是他们在下面 php.net 上所说的关于 ::
范围解析运算符(也称为 Paamayim Nekudotayim)或更简单的术语,即双冒号,是一个允许访问 class 的静态、常量和重写属性或方法的标记。
从 PHP 5.3.0 开始,可以使用变量引用 class。变量的值不能是关键字(例如 self、parent 和 static)。
从 class 定义之外引用这些项目时,使用 class 的名称。
class MyClass {
const CONST_VALUE = 'A constant value';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE;
echo MyClass::CONST_VALUE;
?>
现在回到上面的代码
$classname = 'MyClass';
这是一个变量!被赋予 'STRING' 价值 'MyClass'!
echo $classname::CONST_VALUE;
这条线怎么可能!与此无关 CLASS!
这基本上是一个带有字符串变量的简单变量! 那么它如何神奇地获得访问 CLASS 常数的能力 ::? 我看到的唯一类似的是字符串 'MyClass' 但理论上没有权力让它发生它只是一个字符串。
有人可以解释一下吗,因为我每天遇到 100 个障碍,我开始认为 php 只是编造出来的,因为其中有太多自相矛盾的东西。
在这种情况下,这两行基本相同。
echo $classname::CONST_VALUE;
echo MyClass::CONST_VALUE;
PHP 尝试 "cast" 字符串 "MyClass"
到 Class。如果 class 存在,那么一切都很好。
其他示例可以是:
$instance = new $classname;
其中 $instance
是 MyClass
的有效实例。
换句话说,您可以用字符串表示形式替换 class 名称。