簡體   English   中英

如何組織PHP代碼?

[英]How to organize PHP code?

我正在以模塊化方式編寫應用程序,因此我可以重用一些組件。 我還編寫了在不同組件之間共享的實用程序函數。 例如,如果我有類A(在A.php中),B(在B.php中)和C(在C.php中)和一個函數f(在utils.php中),並且這個函數用於兩者A,B和C,如何組織代碼?

出於測試目的,我分別運行A.php,B.php和C.php,所以我需要在所有這些中包含utils.php。 在所有三個文件中執行require_once'utils.php'是一個很好的解決方案嗎? 我聽說使用require_once可能會遇到輕微的性能問題。 或者我應該寫一個單獨的'test.php',我會導入我需要的所有文件,並使用該代碼進行測試而不是在實際的類文件中編寫測試?

首先, require_once對於運行測試肯定不是“太慢”。 請記住,過早優化是萬惡之源。 是的,它有一些開銷,但除非它導致錯誤或減慢您的生產環境,不要打擾。 衡量,衡量措施。

我傾向於使用的一個好策略類似於Zend Framework。

我的類名基於我的目錄結構。 例如,名為Http_Client_Curl的類將被掛載在以下目錄中:

Http/Client/Curl.php

使用這樣的結構,使用自動加載非常簡單方便。 請參閱spl_autoload_register 這意味着您可以根據非常簡單的約定,讓PHP自動包含您需要的所有文件和類。

如果您使用的是PHP 5.3,我相信命名空間自動加載可以很好地適應您的應用程序。 另一方面,遺留代碼往往被組織成“庫”或“包含”,其核心“includes.inc.php”使用工廠方法或各種其他設計模式來加載類。

如果你是面向對象的編程,你也可以把函數f放到一個類中; utils.php文件中的utils類。

require_once可能對性能的影響很小,因為它必須記住並檢查文件是否已被包含,但這是包含文件的最佳方式,以確保您擁有所需的文件。 然后,您可以包含該文件/類的所有依賴項。

測試當然不應該在您的類文件中。 如果您現在所有的課程都要進行測試,或者您正在測試您的課程,我就不太了解...

關於require_once:

是的,它有一些性能問題。 如果您確定只包含該文件一次,請不要將其放入,這是一項不必要的檢查。

一些建議:

  • 調用require時嘗試使用absolute_path
  • require_once()與require()之間的時差通常不那么顯着,除了一個非常大的應用程序有數百個需要*()調用,這種情況下它真的很慢
  • 使用像APC一樣的操作碼緩存!

暫無
暫無

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

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