在必须返回true或false的函数上键入提示返回值是不好的做法

时间:2010-12-10 05:52:12

标签: php cakephp type-hinting

快速提问:对于那些不了解CakePHP Model-> count()的人;总是返回一个整数。

如果我有一个函数来验证表是否为空(返回true或false),那么执行此操作是个坏主意:

public function isEmpty() {
    return (boolean) $this->find('count');
}

与更详细的相反:

public function isEmpty() {
    if (empty($this->find('count'))) {
        return true;
    }
    return false;
}

基本上,以这种方式使用类型提示是否合适?

4 个答案:

答案 0 :(得分:5)

正如博尔特所说,这是cast,而不是hint(完全不同的东西)。而且,你有它倒退。

可是:

public function isEmpty() {
    return !$this->find('count');
}

没关系。由于!隐式处理它,因此您不需要强制转换。

答案 1 :(得分:4)

这不是类型暗示 - 它是铸造。该语法实际上取右侧表达式的值,转换为您指定的类型(在本例中为boolean)。

像这样使用强制转换没有任何问题,只要你确定它会为所有可能的值设置的效果

根据此处列出的规则进行投射:type casting。你必须关注你关心的任何类型的链接。 casting to boolean are here的规则。

阅读文档,确保您理解它们 - 这可能很棘手。但如果您理解并正确使用它,它是一个有用的工具。

答案 2 :(得分:2)

为什么不检查一下你想知道什么?

public function isEmpty() {
    return (0 == $this->find('count'));
}

但是,我认为你的第一个版本在某种意义上是合适的。

答案 3 :(得分:0)

为什么不这样做?

return (empty($this->find('count'))) ? true : false;