我知道静态比自我好,因为自我做后期静态绑定。
但我想知道哪一个最适合引用常量变量。

class Black
{
    const color = 'black';

    public function byThis()
    {
        return $this::color;
    }

    public function bySelf()
    {
        return self::color;
    }

    public function byStatic()
    {
        return static::color;
    }
}

我检查了三个吸气剂的效果。哪一个是最好的选择?(我使用PHP7.0)

最佳答案

phpclass constants documentation建议对类中的常量使用self::。我个人会留下来。
每个关键字都返回相同的值,即使该类使用常量的另一个值扩展另一个类,但返回父类值的parent::除外:

class White {
    const color = "white";
}

class Black extends White
{
    const color = "black";

    public function byThis()
    {
        return $this::color;
    }

    public function bySelf()
    {
        return self::color;
    }

    public function byStatic()
    {
        return static::color;
    }

    public function byParent() {
        return parent::color;
    }
}

$black = new Black;
echo "byThis: " . $black->byThis() . PHP_EOL;
echo "bySelf: " . $black->bySelf() . PHP_EOL;
echo "byStatic: " . $black->byStatic() . PHP_EOL;
echo "byParent: " . $black->byParent() . PHP_EOL;

结果将是:
byThis: black
bySelf: black
byStatic: black
byParent: white

08-04 20:39