3
class A {
const FOO = 'bar';
}
$a = new A();
// 1.
echo A::FOO;
// 2.
echo $a::FOO;
是選項1.還是2.清潔還是相等?通過實例訪問類的常量是一種不好的做法嗎?
class A {
const FOO = 'bar';
}
$a = new A();
// 1.
echo A::FOO;
// 2.
echo $a::FOO;
是選項1.還是2.清潔還是相等?通過實例訪問類的常量是一種不好的做法嗎?
唯一的區別是,A::FOO
將始終指一個非常具體的,不變的常數。 $a::FOO
涉及哪個值取決於什麼$a
,這可能會改變。這允許您在該子類中繼承子類A
並覆蓋FOO
。通常,$a::FOO
允許更多的「鴨子式」編程風格,而不是硬編碼類名。因此,這根本不是一個壞主意。
覆蓋子類中的常量是否是一個絕妙的想法是一個不同的話題,但如果仔細應用它,它可以有其用途。
這兩種工作都是合法的,都有其用處。 – deceze