PHP是一種非常靈活的語言,我可以隨時隨地做到這一點。但是,您認爲什麼是構建大型項目的最佳實踐?構建一個大型的PHP項目
我爲客戶建立了一個定製CMS,但因爲這是我第一次冒險進入一個大型項目,所以它有點混亂。到處都有文件,文件夾結構非常糟糕。
一位朋友建議,應該坐在網站根目錄下的唯一文件是「頁面」文件 - 即實際上包含HTML的文件,並且您應該爲每個不同的元素分別存放文件夾,然後可以很容易地將其與包含在不同的頁面中。每個人都會推薦這條路線,還是完全由個人喜好來管理?
PHP是一種非常靈活的語言,我可以隨時隨地做到這一點。但是,您認爲什麼是構建大型項目的最佳實踐?構建一個大型的PHP項目
我爲客戶建立了一個定製CMS,但因爲這是我第一次冒險進入一個大型項目,所以它有點混亂。到處都有文件,文件夾結構非常糟糕。
一位朋友建議,應該坐在網站根目錄下的唯一文件是「頁面」文件 - 即實際上包含HTML的文件,並且您應該爲每個不同的元素分別存放文件夾,然後可以很容易地將其與包含在不同的頁面中。每個人都會推薦這條路線,還是完全由個人喜好來管理?
如果開始一個新項目,考慮使用框架,或看看他們是如何做的。
框架通常會指定或建議目錄結構。
即使你不最終使用一個:他們構建項目的方式通常來自大量的經驗。
我個人比較喜歡Zend Framework的結構化方式和Autoloader。但是那裏有幾個選擇和哲學。
框架問題:
一般涉及:
我建議在根文件夾中只有一個文件,名爲index.php,並根據收到的請求使該文件包含所需的所有內容。 如果你做OOP,通常很容易把你的類放到模仿你的命名空間的文件夾結構中(無論是在PHP < 5.3中進行模擬還是在5.3+中實際進行模擬)。這允許輕鬆自動加載類。
我個人使用你在最後一段所描述的方式,並發現它是有用的,乾淨&快速execure。一定要將所有常見的東西移動到常見的libs /文件中,絕不應複製/粘貼。
另一種(常見)結構化方式是當你使用一些框架,通常強制執行一些特定的項目結構。
我會說它沒有問題太多你如何佈局你的應用程序的文件夾。擁有文件是必要的,它對應用程序有一定的影響。解決影響。這不是你如何佈局你的文件夾,這是爲什麼。在下面找到一些的想法。
爲了安全起見,您應該只將這些腳本放入實際上應該直接可用於全世界的webroot中。另外,如果您有在運行時創建的文件,請確保在您的應用程序部署/更新到您的服務器時,這些文件不會被覆蓋。無論您是在部署例程中還是通過文件夾佈局解決該問題,都取決於您。
爲了提高性能,請考慮到包含特定請求不需要的文件/代碼將不必要地拖慢您的應用程序。因此,有許多include_paths進行搜索。確保PHP可以快速找到所需的文件。
爲了可維護性,請使用常識。沒有規定你必須每個類有一個文件。也沒有規定您必須遵循PEAR文件佈局。 PEAR是一個普遍的約定和合理的約定,但是如果它對這個特定的應用程序有意義,則可以將它們放到一個文件夾中。
IMO,一個應用程序不是文件,它是其中的代碼。讓你的代碼組織起來比你的文件更重要。有一個凌亂的文件佈局是一個問題比凌亂的體系結構。
我相信這是一個開始讓你的代碼有很多膨脹,不幸的是,這種方式是相當普遍的。 – BarsMonster 2010-09-02 09:42:59
@BarsMonster由於該問題需要大型PHP項目,而不是一些小型站點,因此使用FrontController是一個合理的建議。文件夾結構也是一個很好的電話。這是梨大會afaik。用upvote補償downvote。 – Gordon 2010-09-02 09:45:26
@BarsMonster:可以說,如果你把一個巨大的switch()語句放到index.php中,它可能是最糟糕的方法。但是有辦法以更精簡的方式來做到這一點(我會把你在你的答案中提到的框架引用給你) – Mchl 2010-09-02 10:01:49