PHP - 将类常量值分配给构造函数中的属性

dje*_*tic 5 php class constants

我一直在尝试创建一个简单的类,它将默认属性值定义为类定义顶部的类常量。

但是,我的代码似乎没有将常量的值分配给构造函数中的属性。

class Tester {
    const DEFAULT_VAL = 500;

    private $val;

    public function __construct() {
        $val = self::DEFAULT_VAL;
    }

    public function show_val() {
        echo "DEFAULT_VAL is " . self::DEFAULT_VAL . "<br />";
        echo "val is " . $val;
    }
}

$obj = new Tester();
$obj->show_val();
Run Code Online (Sandbox Code Playgroud)

运行上面的代码得到结果:

const is 500
val is 
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么我不能从构造函数中为属性分配预定义的常量默认值。

Pau*_*aul 5

您需要在代码中的两个位置使用$this->valin 代替$val,因为 Tester 的每个实例都有自己的 val:

class Tester {

    const DEFAULT_VAL = 500;

    private $val;

    public function __construct() {
        $this->val = self::DEFAULT_VAL;
    }

    public function show_val() {
        echo "DEFAULT_VAL is " . self::DEFAULT_VAL . "<br />";
        echo "val is " . $this->val;
    }
}

$obj = new Tester();
$obj->show_val();
Run Code Online (Sandbox Code Playgroud)

输出

DEFAULT_VAL is 500
val is 500
Run Code Online (Sandbox Code Playgroud)