我只是不明白,
class MyClass
{
const constant = 'constant value';
function showConstant() {
echo self::constant . "\n";
}
}
class MyClass
{
public $constant = 'constant value';
function showConstant() {
echo $this->constant . "\n";
}
}
Run Code Online (Sandbox Code Playgroud)
主要区别是什么?它和定义变量一样,不是吗?
常量是恒定的(哇,谁曾想到这件事?)他们不是需要一个类的实例.因此,你可以写MyClass::CONSTANT,例如PDO::FETCH_ASSOC.另一方面,属性需要一个类,因此您需要编写$obj = new MyClass; $obj->constant.
此外还有静态属性,它们也不需要实例(MyClass::$constant).这里的差异是,MyClass::$constant可能会改变,但MyClass::CONSTANT可能不会.)
因此,只要有标量,非表达式值,就不会更改常量.它比属性更快,它不会污染属性命名空间,对于读取代码的任何人来说都更容易理解.
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |