我已经阅读了我在这个问题上可以找到的内容,但我对于缺乏替代方案感到非常困惑。如果你有一个PHP的OOP项目,使用consts就像它可以获得的那样丑陋。这是问题所在:
class Invisible {
CONST youCantSeeMe = "";
}
class Ugly {
$invisible;
static $invisible2;
function __construct() {
$this->$invisible = new Invisible();
self::$invisible2 = New Invisible();
$this->invisible::youCantSeeMe; (illegal, crashes project)
self::$invisible2::youCantSeeMe; (illegal, crashes project)
}
function uglyFunction() {
//this is the only, ugly way to do it
$invisible = $this->invisible;
$invisible::youCantSeeMe (this works)
}
}
我发现它的唯一另一种方法是为你拥有的每个const做一个公共的获取(繁琐,浪费时间),或者使用反射类(昂贵的)使用魔法__get。
有比这些选择更好的方法吗?
答案 0 :(得分:1)
我认为您的投诉与incomplete dereferencing support非常相关。
::
只接受左侧的简单参考变量
这已在PHP 7中实现的Uniform Variable Syntax RFC中修复。