2012-09-30 54 views
0

我正在開發我在php中的第一個相當大的項目。我決定從頭開始構建一切,沒有任何框架。分組和包含php項目中的文件,書

首先,我有以下結構:

index.php 
includes/   //all php pages, except index. 
includes/scripts/ //all php classes that do not print web pages. 
styles/    //all my css files. 
images/    //all images used on the website. 

但是,這是從不同的文件夾中包含文件時給我找麻煩。

我現在已經改成了:

index.php 
the rest of my .php files 
styles/ 
images/ 

我所有的包括適當現在的工作,而不必在文件夾之間跳轉。但我覺得我已經失去了對我的項目的概述。

目前我在如何做事情方面有點失落。這本書是什麼,將我的文件夾分組幷包含我的文件的正確方法?

編輯:我也想看到實際包括文件的一些技巧。什麼是包含文件的一些技術,無論include()被稱爲哪裏?一個具體的例子,根據我的第一個結構。

includes/scriptslogin.php有一個腳本。 login.php然後包括來自includes/page.php(簡單頁面模板)。 page.php將包括模板的幾個部分(header.php,footer.php)。但我也必須從include/的文件中撥打page.php

這是給我的麻煩,因爲相對路徑是不同的,如果page.phpincludes/includes/scripts/

+0

很抱歉,如果我需要說出來,但*經書的*重新沒有這種正確的方式。如果您可以說出與您打交道的哪些問題(我在此閱讀關於在各行之間組織.php文件的問題,但遇到了哪些問題?),我認爲這會使您和其他用戶的潛在答案更有用類似的情況。 – hakre

+0

你現在正在做什麼,即根本不分組,這是我永遠不會做的一件事。至少你應該保留腳本文件,這些腳本文件不應該直接從網頁上的某個地方訪問,因此你可以阻止訪問它們。之後,通常有兩種主要的方法可以實現:「逐層」或「逐個功能」。前者容易做到毫不含糊;後者需要更多的思考/工作,但我認爲可以引導你更好地分解你的代碼。 (例如,如果您無法想象某個類屬於哪個功能,那麼將其分開即可能很好。) – millimoose

回答

2

您的問題可能是由相對路徑引起的。

這可以通過使用絕對路徑如:

require_once("/var/www/clients/client05/web29/web/includes/scripts/myClass.php"); 

爲了更方便您還可以在index.php定義常量(或將得到包括每一次的任何其他文件)

define("WEB_ROOT", "/var/www/clients/client05/web29/web/"); 
define("INCLUDES_DIR", WEB_ROOT . "includes/"); 
define("SCRIPTS_DIR", INCLUDES_DIR . "scripts/"); 
來解決

文件就可以伊斯利包括

require_once(SCRIPTS_DIR . "myClass.php"); 
    require_once(INCLUDES_DIR . "acp.php"); 
+0

您的代碼不會以這種方式移植。使用'__DIR__',並堅持自動加載類 - 顯式要求只是一團糟。 – moonwave99

+0

這可能是我需要的。其他答案確實有幫助,我會用它們。但這個答案實際上解決了我的問題。 –

1

公正直截了當的建議呼籲:

index.php 
app/ 
styles/ 
images/ 

所有的PHP代碼進入app/和可以進一步按照您認爲合適的方式進行組織,例如爲您的模板創建一個目錄,其中一個用於存儲第三方代碼,然後是您爲應用程序構建的自己的庫。

你應該能夠隨時移動app文件夾,然後到磁盤上的其他任何位置,尤其是出文檔根。

這很容易用所謂的front controller來完成,它將與應用程序相關的所有請求路由到相關代碼(從技術上講,這允許您甚至有多個應用程序並排)。

在上面的佈局,index.php扮演這個角色。這是您的應用程序的入口點。

1

你不應該去想單純文件,而是策略有關如何使用資源互動。

由於PHP具有良好的面向對象的支持,現在,你可以利用namespaces和組織您的類文件夾中,你喜歡的方式。

如果您不想使用框架[但我強烈建議您這樣做[因爲它會使您的應用程序更安全,更易於維護]],因此您會發現this article對如何組織結構有所啓發。

您可以選擇一些組件,如symfony自動加載器以隨意加載類,然後根據您的文件系統組織處理所有其他資源[css,js,images]。

1

我的優選組織結構包括:

的index.php以及根的所有其他PHP頁面( 「/」)
/包括/(目錄等頁眉,頁腳包括模板項,分析代碼等...任何經常重複使用)
/包括/班/(對於PHP類)
/圖片/(個體經營explanitory;我也用這裏面的幾個目錄根據我的圖片的最明智的組織)
/風格/(對CSS,與字體文件 「/風格/字體/」 目錄)
/腳本/(對於JS或類似)
/support/(對於我可能使用的任何安裝文件)