【发布时间】:2012-11-17 13:33:31
【问题描述】:
在 PHP 中,我发现自己经常编写这样的代码:
$a = isset($the->very->long->variable[$index])
? $the->very->long->variable[$index]
: null;
有没有更简单的方法来做到这一点?最好是不需要我写两次$the->very->long->variable[$index]。
【问题讨论】:
-
通过工作 OOP 并使用 __get 和 __set?
-
@DaHaKa:这可能会在具有良好设置的服务器上发出警告 (
E_STRICT | E_ALL) -
如果您经常使用相同的长变量,则可以使用引用:
$ref = $the->very->long->variable; $a = !empty($ref[$index]) ? $ref[$index] : null; $b = !empty($ref[++$index])...,或者正如@Bondye 指出的那样,使用魔法 getter 方法,并将其设置为返回 null 或属性值 -
看起来
->variable可以实现/包装到ArrayAccess并在offsetGet操作中为未设置的索引默认返回NULL。 - 也请仔细检查潜在的重复,你可以在这个网站上找到一些宝石。 -
也许 monad 可能适用于此,尽管我不太了解它可以肯定地说:github.com/ircmaxell/monad-php