簡體   English   中英

Zend Framework 2中的工廠類與閉包

[英]Factory classes vs closures in Zend Framework 2

在Zend Framework 2中使用工廠類或閉包更好嗎?為什么?

我知道閉包不能被序列化,但是如果你從Module#getServiceConfig()返回它們,這不會影響其余配置數據的緩存,並且閉包將被緩存在你的操作碼緩存中。

在構建工廠類與執行閉包時,性能有何不同? PHP是否僅在執行時包裝和實例化閉包,或者它是否會在每個請求中為配置文件中定義的每個閉包執行此操作?

有沒有人比較過每種方法的執行時間?

也可以看看:

PHP會在編譯時將配置中的匿名函數轉換為閉包類的實例,因此它會在每個請求中執行此操作。 這與create_function不同, create_function將在運行時創建函數。 但是,由於閉包在編譯時執行此操作,因此它應該在您的opcache緩存中,因此無關緊要。

首先,您必須記住,每次請求都只構建一次服 我運行了一個使用閉包和工廠獲取服務的快速基准測試,這就是我得到的(我跑了幾次,所有結果都是相同的值):

Closure: 0.026999999999999ns
Factory: 0.30200000000002ns

那些是納秒,即10 -9秒。 基本上,性能差異很小,沒有有效的差異。

此外,ZF2無法使用閉包緩存整個模塊的配置。 如果我使用純工廠,那么我的整個配置可以合並,緩存,並且可以在每個請求上讀取一個簡單的文件,而不必擔心每次加載和合並配置文件。 我沒有測量過它對性能的影響,但我猜它在任何情況下都是微不足道的。

但是,我更喜歡工廠,主要是可讀性和可維護性。 對於工廠,你不會得到一些龐大的配置文件,其中包含大量的閉包。

當然,關閉對於快速開發很有幫助,但如果你希望你的代碼可讀和可維護,那么我會說堅持工廠。

暫無
暫無

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

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