簡體   English   中英

如何在PHP中實例化和重用服務

[英]How to instantiate and reuse services in PHP

在Java EE中,我將使用Spring實例化和重用我的服務。 現在,我已經使用PHP創建了一個小型框架,以使用服務,存儲庫和DAO支持我的應用程序。

但是,如何實例化(更重要的是)重用這些對象,而不必每次都實例化一個新對象?

剛開始使用單例很誘人,但是隨后我的代碼很快就會變成一團糟。

實際上,我通常無法在PHP中使用良好的OO實踐和設計模式。 有什么好的資源嗎?

我一直在PHP中一直使用Singleton方法,我認為我的代碼還不是一團糟-到目前為止。 許多其他項目(例如Typo3)也使用全局數組來存儲對象。 我不喜歡這種方法,因為數組項很容易被覆蓋。

但是,如果使用名稱空間並將項目文件放在文件夾中(例如Java中),則Singleton方法非常干凈。 使用getInstance()方法,比起$globalArray['myInstance'] ,您在安全方面要$globalArray['myInstance']

在php中,我們使用了重要的framewokr也使用的延遲加載技術

您需要建立一個自動加載策略,因為在php中,您應始終包括編寫類的文件以實例化對象

Symfony使用名稱空間,例如

\DB\Repository\Classes\Product

例如在一個

/DB/Repository/Classes/Product.php file

你直接做一個

$product = new Product()

無需考慮包括文件和其他此類操作。

我相信您正在尋找的是Service容器(IoC容器)。 您可以在應用程序中使用一些PHP實現。 到目前為止,我已經使用了一個由Symfony框架提供的依賴注入組件。 該文檔可在此處找到。

我知道PHP中還有另一種實現,稱為Zend DI。 自2.0版以來,它是由另一個大型PHP框架提供的,盡管該框架仍處於測試階段。 有關Zend DI組件的一些示例,請參見此處

暫無
暫無

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

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