3

有一次我看到有人在 __get 方法中使用了下面的代码,它看起来很优雅,所以我复制了。

public function __get($param)
{
    if (!isset($this->params[$param])) {
        throw new Exception("Property doesn't exist");
    }
    return $this->params[$param];
}

但是现在在根据属性是否存在进行简单操作时处理异常似乎太多了。在这种情况下,最好的做法是什么。是返回 NULL 然后检查足够吗?

4

2 回答 2

0

我会说返回 NULL 并检查就足够了,尽管这取决于您的应用程序的功能。

如果您的类在运行时创建属性,那么抛出异常可能会很好,但如果所有属性在编译时都存在,那么 NULL 是最好的。

于 2012-05-28T16:16:52.687 回答
0

在 php 中,与其他一些语言不同,这不是一个例外情况。我同意你的观点,除非有特殊情况,否则例外太戏剧化了。

我倾向于模仿 php 中正常的预期行为,即返回 null 的值并触发levelE_NOTICEE_USER_NOTICE. 这是您尝试读取未定义的属性、数组索引或变量时的正常行为。

顺便说一句-您可能还对实现魔术__isset方法感兴趣

于 2012-05-28T16:54:54.437 回答