object as exit()参数

时间:2017-06-09 09:07:34

标签: php fuelphp

这甚至有效吗?因为它有效。

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)有效吗?因为它似乎在起作用。

我想做的是如果查询是空页面会显示错误模板而不是默认模板,任何帮助都将不胜感激,谢谢!

2 个答案:

答案 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()类方法(如果可用的话)(但我不是确定这个)。