使用self vs class name访问常量之间有什么区别(
)class MyClass {
const MAGIC_NUMBER = 4;
protected $number;
public function __construct()
{
$this->number = self::$MAGIC_NUMBER;
}
}
VS
class MyClass {
const MAGIC_NUMBER = 4;
protected $number;
public function __construct()
{
$this->number = MyClass::MAGIC_NUMBER;
}
}
答案 0 :(得分:1)
他们之间没有区别
你也不应该把$
放在那里:
const MAGIC_NUMBER = 4;
protected $number;
答案 1 :(得分:1)
您提供的示例无效,我认为您可能会混淆常量和静态变量。
类常量:
class MyClass {
const MAGIC_NUMBER = 4;
protected $number;
public function __construct()
{
$this->number = self::MAGIC_NUMBER; // or MyClass::MAGIC_NUMBER
}
}
静态类变量:
class MyClass2 {
static $MAGIC_NUMBER = 4;
protected $number;
public function __construct()
{
$this->number = MyClass2::$MAGIC_NUMBER; // or self::$MAGIC_NUMBER
}
}
主要区别在于可以更改MyClass2 :: $ MAGIC_NUMBER,而在这两种情况下都可以访问这些值而无需该类的实例。