2017-06-09 67 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()方法。所以這個對象在使用時會返回一個字符串。