快速提问:对于那些不了解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;
}
基本上,以这种方式使用类型提示是否合适?
答案 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;