2017-06-09 37 views
-1

这是否甚至有效?因为它工作。对象作为退出()参数

if(empty($query)) { 
    exit(View::forge('error', $data)); 
    //View::forge('error', $data) = object 
} 

根据PHP手册exit应该只接受“字符串”或“整数”作为参数。

所以,我想:

if(empty($query)) { 
    return View::forge('error', $data); //will not display 
} 

    return View::forge('default', $data); //displays 

但似乎忽略了它,并显示默认的模板,所以我试了一下,退出组合:

if(empty($query)) { 
    return View::forge('error', $data); //will not display 
    exit; 
} 

return View::forge('default', $data); //displays 

但还是同样的结果,我想知道退出($ obj)在fuelphp中有效吗?因为它似乎在工作。

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

回答

0

如果对象的结果是一个字符串或整数,则它符合手册中设置的条件。无论在exit括号内的内容是作为PHP行执行的;见下面的例子:

$a = 4; 
$b = 17; 
exit(print $a * $b); 

这将输出

所以,对您的问题:

exit(View::forge('error', $data)); 

如果返回的结果View::forge是一个字符串或其他可打印的输出,然后它符合exit规定的标准并相应执行。

什么将工作是一个非整数,非字符串的结果,例如:

$a[] = "trees"; 
$b[] = "cats"; 

exit(array_merge($a,$b)); 

给出:

通知:Array对第4行

串转换

由于这个“转换”,我预计如果你传递一个对象到th e exit功能,那么它可能会尝试使用__toString()类方法,如果可用的话(但我不确定)。

+0

感谢您的回复!我试过var_dump(View :: forge('error',$ data));并返回 - >对象(燃料\核心\视图)#23(){...等你的意思是说对象被处理为字符串?和exit()参数是有效的? 所以我没有任何问题编码这种方式? –

1

Fuel的View类有一个调用render()来渲染视图模板的_toString()方法。所以这个对象在使用时会返回一个字符串。