2011-05-26 102 views
17

我包括文件inner.phpouter.php,我有一個條件inner.php我想停止執行inner.php但不是整個腳本,即我想跳轉到在包含inner.php之後的第一行outer.php中,我不想將所有inner.php中的代碼包含在if語句中。跳過PHP(其中包含的)文件的其餘部分

有沒有辦法做到這一點,否則呢?

回答

26

只要在inner.php文件的頂層執行return;return($value);即可。

如果從全局範圍調用,然後 當前腳本文件 的執行結束。如果當前腳本文件 是include()edrequire()ed,則將 控件傳回給調用的 文件。此外,如果當前的 腳本文件是include()ed,那麼給予return()的 值將爲 ,作爲include() 調用的值返回。

+1

摘取說明的徹底性,具體回答*我的問題 – MeLight 2011-05-26 10:39:01

+0

太棒了!謝謝:-)回報真的幫了我 – Can 2015-05-21 05:07:35

+0

+1,我從來沒有意識到'require'或'include'可以有返回值。使用退貨,我可以檢查自動包含提供有效的類更好一點:D – 2015-08-25 09:38:29

9

您可以在您的包含文件中調用return,但是如果您必須這樣做,那麼它表明您的架構有問題。例如,考慮這個包含文件:

<?php 
// include.php 
echo "This is my include"; 
return; 
echo "This is after the include"; 

..included下頁:

<?php 
// index.php 
include('include.php'); 

你會得到的輸出是:This is my include

+0

我推薦使用require來停止你的頁面執行,如果找不到include文件。我也同意,如果你想要這樣做,你的架構可能有些問題。分割您的包含文件或在包含文件中進行條件測試。 – 3nixios 2011-05-26 09:24:02

2

如何有兩個文件的內部。第一部分和第二部分將條件放在第二部分?

2

扔在那裏要停止

// in inner.php: 
// ...some code... 

throw new Exception('Error description'); 

// ...some code which will not always execute... 

,並抓住它在文件中要恢復

// in outer.php 
try { 
    include 'inner.php'; 
} catch (Exception $e) { 
    //TODO: add error handling here 
} 

UPDATE

不同點異常使用return;作爲其他答案在這裏建議,使用例外將打破在哪裏,即使你在某個函數內inner.php

相關問題