2012-04-20 67 views
0

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

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

這很誘人開始使用單身人士,但隨後我的代碼很快就會變成一團糟。

事實上,我在使用一般的PHP使用良好的OO實踐和設計模式時遇到了麻煩。有沒有這方面的好資源?

+0

使用PHP框架 – 2012-04-20 07:13:44

+0

我喜歡這本關於PHP設計模式的書:http://www.amazon.com/PHP-Design-Patterns-Stephan-Schmidt/dp/389721864X/ref=sr_1_7?ie=UTF8&qid=1334906032&sr= 8-7 – bardiir 2012-04-20 07:16:08

回答

1

我個人在PHP中一直使用Singleton方法,在我看來,我的代碼並不是一團糟 - 但是。很多其他項目(例如Typo3)使用全局數組來存儲對象。我不喜歡這種方法,因爲數組項可以很容易地被覆蓋。

但是,如果您使用命名空間並將文件夾中的項目文件(比如在Java中),Singleton方法非常乾淨。與getInstance()方法相比,您的安全性要高出$globalArray['myInstance']

+0

同意。工廠/單體模式重用已建立的對象沒有任何問題。 – 2012-04-20 19:56:19

0

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

你需要建立一個自動加載的策略,因爲在PHP你應該總是包含在類被寫入到實例化對象的文件

symfony使用的命名空間,以便例如

\DB\Repository\Classes\Product 

例如在

/DB/Repository/Classes/Product.php file 
中登記

和你做一個直接

$product = new Product() 

如果不採取包括文件和其他類型的這樣操作的照顧。

0

我相信你要找的是服務容器(IoC容器)。有一些PHP實現可以在你的應用程序中使用。到目前爲止,我所使用的稱爲由Symfony框架提供的依賴注入組件。該文檔可以找到here

還有另外一個PHP實現我知道叫做Zend DI。它是由2.0版本以來的另一個大型PHP框架提供的,儘管它仍處於測試階段。 Zend DI組件的一些例子可以在here找到。