这甚至有效吗?因为它有效。
if(empty($query)) {
exit(View::forge('error', $data));
//View::forge('error', $data) = object
}
根据PHP手册exit应该只接受“string”或“int”作为参数。
所以我试过了:
if(empty($query)) {
return View::forge('error', $data); //will not display
}
return View::forge('default', $data); //displays
但它似乎忽略了它并显示默认模板,所以我尝试将它与exit结合使用:
if(empty($query)) {
return View::forge('error', $data); //will not display
exit;
}
return View::forge('default', $data); //displays
但结果仍然相同,我想知道的是在Fuelphp中退出($ obj)有效吗?因为它似乎在起作用。
我想做的是如果查询是空页面会显示错误模板而不是默认模板,任何帮助都将不胜感激,谢谢!
答案 0 :(得分:1)
Fuel的View类有一个_toString()方法,它调用render()来呈现视图模板。因此,对象在使用时会返回一个字符串。
答案 1 :(得分:0)
如果对象的结果是字符串或整数,那么它符合手册中设置的条件。 exit
括号内的任何内容都作为PHP行执行;见下面的例子:
$a = 4;
$b = 17;
exit(print $a * $b);
这将输出
68
所以,关于你的问题:
exit(View::forge('error', $data));
如果View::forge
的返回结果是字符串或其他可打印输出,则它符合exit
设定的条件,并相应执行。
不 工作的是非整数非字符串结果,例如:
$a[] = "trees";
$b[] = "cats";
exit(array_merge($a,$b));
给出:
注意:第4行的数组到字符串转换
由于这种“转换”,我希望如果你将一个对象传递给exit
函数,那么它可能会尝试使用__toString()
类方法(如果可用的话)(但我不是确定这个)。