php中的常量vs属性?

Ada*_*han 4 php

我只是不明白,

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)

主要区别是什么?它和定义变量一样,不是吗?

Nik*_*kiC 9

常量是恒定的(哇,谁曾想到这件事?)他们不是需要一个类的实例.因此,你可以写MyClass::CONSTANT,例如PDO::FETCH_ASSOC.另一方面,属性需要一个类,因此您需要编写$obj = new MyClass; $obj->constant.

此外还有静态属性,它们也不需要实例(MyClass::$constant).这里的差异是,MyClass::$constant可能会改变,但MyClass::CONSTANT可能不会.)

因此,只要有标量,非表达式值,就不会更改常量.它比属性更快,它不会污染属性命名空间,对于读取代码的任何人来说都更容易理解.