2014-02-09 117 views
1

所以我的登錄檢查我分成了兩個部分,我試圖把兩個不同的文件,包括他們。首先,我將顯示原始代碼,然後顯示拆分代碼。我認爲我的問題是與包含的鏈接。我嘗試使用絕對路徑。但它似乎失敗了。我的整個應用程序都是模塊化的,因此我在應用程序結構的其餘部分設置了全局文件,並根據需要調用這些文件。我也想通過_autoload()加載函數,但我不知道這會解決我的問題。php包含裏面其他包括

<? 
//Inventory index.php 
include$_SERVER['DOCUMENT_ROOT'].'/Globals/db_connect.php'; 
include$_SERVER['DOCUMENT_ROOT'].'/Globals/functions.php'; 
sec_session_start();if(login_check($mysqli)==true){?> 

/////Html and or more php code to be executed. Usualy a mix of both. 

<?}else{ 
echo ("You are not authorized to access this page, please <a href=\"http://website.com/AUTH/login.html\">login</a>. <br/>");}?> 

這裏就是我試圖做的.... P.S。我知道我的代碼有點難以閱讀我正在嘗試對它進行格式化以便於閱讀,但是我可以比我可以分隔的代碼更好地處理叢集。不知道爲什麼。

<? 
//Inventory index.php 
include$_SERVER['DOCUMENT_ROOT'].'/Globals/auth1.php';?> 

/////Html and or more php code to be executed. Usualy a mix of both. 

<?}else{include$_SERVER['DOCUMENT_ROOT'].'/Globals/auth2.php';?> 

我認爲發生的事情是包含在Auth1中失敗。我的絕對路徑失敗了嗎?我最好使用_autoload()。

+0

爲什麼不使用'include('Globals/auth1.php');'? – malta

+1

你總是會更好地使用'__autoload()',但爲此你需要使用類。 –

+1

你最好是縮進,併爲初學者正確設置代碼格式,而且最好不要使用短開標籤。 –

回答

0

您應該始終選擇「自動加載」,以支持手動包含,原因有很多。

  1. 可讀結構 - 一類爲每個文件和每個命名空間段一個文件夾,您可以非常快速的找到你的項目的目錄結構什麼。

  2. 易於維護 - 如果您更改了文件的文件夾結構/位置(以及它們的名稱空間),則無法重寫和驗證路徑。

  3. 與其他項目的兼容性,例如使用PSR-0PSR-4。 PSR-0用於覆蓋遺留代碼,PSR-4應將用於新庫。

  4. 與軟件包管理軟件的兼容性 - 期望某種可預測的約定得到尊重。例如Composer需要PSR-0或PSR-4,它可以爲您自動加載。

在編碼標準和格式相同的主題適用於:

  1. 熟悉結構更容易識別。

  2. 該決定完全是任意的;它總是你的(或你的團隊的)選擇。要麼會工作正常 - 你會習慣任何一個。

  3. 一致性是非常重要的,PSR-1PSR-2是雙方的Symfony &朋友用得上,以及其使用的作曲家爲他們的包管理(及其他)許多其他項目。

0

我可以建議使用作曲家,它的autoloader它支持不同類型的文件加載。對於製作,您可以使用--optimize option來更好地自動加載作品(因爲我記得作曲家掃描所有文件夾並構建現有文件的陣列)