簡體   English   中英

為什么要對整個網站使用單個index.php頁面?

[英]Why use a single index.php page for entire site?

我要接管一個現有的PHP項目。 我注意到以前的開發人員在整個網站上使用一個index.php頁面,目前使用10多個頁面。 這是我看到的第二個這樣的項目。 我看不到這種方法的優勢。 實際上,這似乎使所有事情變得復雜,因為現在您不能只向網站添加新頁面並鏈接到該頁面。 您還必須確保使用if子句更新主索引頁面以檢查該頁面類型,然后加載該頁面。 看來,如果他們只是想重用模板,則將includes用作頁眉和頁腳,然后使用所引用的文件創建每個新頁面會更容易。

有人可以解釋為什么會使用這種方法嗎? 這是我不熟悉的某種形式的MVC模式嗎? PHP是第二語言,因此我對最佳實踐不太熟悉。

我曾嘗試在Google中搜索“使用php的單個索引頁面”之類的方法,但是我找不到任何好的文章來解釋為什么使用這種方法。 我真的很想把這些舊東西踢到路邊,而不是繼續沿着那條路走,但我想在提出建議之前有一些合理的理由。

前端控制器(index.php)可確保始終正確處理整個站點共有的所有內容(例如,身份驗證),無論您請求哪個頁面。 如果您到處散布了50個不同的PHP文件,則很難進行管理。 而且,如果您決定更改公共庫文件的加載順序,該怎么辦? 如果只有一個文件,則可以在一個位置進行更改。 如果您有50個不同的入口點,則需要全部更改。

有人可能會說,一直加載所有常見的東西是浪費資源,您應該只加載該特定頁面所需的文件。 真正。 但是,當今的PHP框架大量使用了OOP和自動加載功能,因此不再存在這種“浪費”。

前端控制器還使您很容易在站點中擁有漂亮的URL,因為您絕對可以隨意使用自己喜歡的任何URL,並將其發送到所需的任何控制器/方法。 否則,您將陷入以.php結尾的每個URL后面緊跟丑陋的查詢字符串列表的情況,而避免這種情況的唯一方法是在.htaccess文件中使用甚至更丑陋的重寫規則。 即使是WordPress,它具有數十種不同的入口點(尤其是在admin部分中),也會強制大多數常見的請求通過index.php進行訪問,以便您可以使用靈活的永久鏈接格式。

幾乎所有其他語言的Web框架都使用單個入口點-或更准確地說,調用單個腳本來引導進程,然后該進程與Web服務器進行通信。 Django就是這樣。 CherryPy就是這樣。 用Python這樣做很自然。 使Web應用程序以任何其他方式編寫(除非用作老式CGI腳本時)的唯一廣泛使用的語言是PHP。 在PHP中,您可以為任何文件賦予.php擴展名,然后它將由網絡服務器執行。 這非常強大,並且使PHP易於學習。 但是一旦您超過了一定程度的復雜性,單進入點的方法就會開始變得更具吸引力。

在公共目錄中只有一個index.php文件還可以防止php解釋器崩潰。 許多框架使用index.php文件在doc根目錄之外包含bootstrap文件。 如果發生這種情況,用戶將可以查看該單個文件的源代碼,而不是整個代碼庫。

好吧,如果唯一改變的是URL,那么除了出於美觀目的之外,它似乎並沒有出於任何原因而完成...

對於我來說-單個入口點可以幫助您更好地控制應用程序:它可以輕松處理錯誤,路由請求,調試應用程序。

單個“ index.php”是確保對應用程序的所有請求都流經同一門的簡單方法。 這樣,當您添加第二個頁面時,不必確保所有引導程序,身份驗證,授權,日志記錄等都已配置完畢-您可以免費獲得該框架的優點。

在現代Web框架中,這可能使用前端控制器,但由於許多PHP代碼/開發人員都患有NIH綜合症,因此無法確定。

通常,當頁面的內容由數據庫內容確定時,將使用此類方法。 因此,所有工作都將在一個文件中完成。 這在CMS系統中很常見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM