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