如何操作其他模塊而不編輯它們?與wordpress模塊非常相似。 它們在不改變核心代碼的情況下爲核心系統增加功能,它們像魅力一樣工作。在zend框架中操作其他模塊的功能2
我一直想知道如何在自己的模塊化應用
如何操作其他模塊而不編輯它們?與wordpress模塊非常相似。 它們在不改變核心代碼的情況下爲核心系統增加功能,它們像魅力一樣工作。在zend框架中操作其他模塊的功能2
我一直想知道如何在自己的模塊化應用
這是一個長期的話題,但這裏是一個簡短的主旨實現這一點。
Zend Framework 2中的可擴展性在很大程度上依賴於組件可互換,添加和/或替換的前提。
閱讀上SOLID原則:http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
模塊通常由一個運轉良好的機器,旨在完成一件事或一堆相關的事物一起工作的對象,無論那是。這些對象被稱爲服務,並由服務定位器/服務管理器管理。
使模塊真正可擴展的一個重要組成部分是希望開發人員擴展一個類或實現一個特定的接口,開發人員將該接口註冊爲服務。您應該提供一種定義模式,其中開發人員可以指定他想要替換的事物和/或添加他們自己的服務 - 這是應用程序配置的來源。
鑑於應用程序配置,您應該根據開發人員指定的選項構建您的機器aka模塊服務,即使用開發人員定義的Foo\Bar\UserService
服務作爲模塊內的YourModule\UserServiceInterface
等(這通常委派給服務工廠,該服務工廠有機會讀取應用程序配置並且給定一組特定的配置值來構造適當的對象)。
編輯:
要增加,很多可以通過利用Zend的Zend\EventManager
組件完成。這可以讓開發人員自由地鉤住和聽取模塊的某些操作並採取相應的行動(參見:http://en.wikipedia.org/wiki/Observer_pattern)
很久以前,我寫了一篇博客文章「在Zend Framework 2中使用第三方模塊」關於擴展Zend Framework 2模塊。 Bez的答案在技術上是正確的,它可能會更具體一些。
閱讀全文後在https://juriansluiman.nl/article/117/use-3rd-party-modules-in-zend-framework-2,但它給你一個線索:
/account/login
代替/user/login
)感謝您的回答,您的解決方案即將覆蓋和更改某些部分,但我的意思是爲現有模塊添加一些功能而不是覆蓋它們,但是我再次感謝您的回答,您的解決方案可以在某些情況下提供幫助。 – Dante
@Dante如果你瞭解如何修改這些東西的邏輯,添加一些你自己的東西也很容易。例如,在第三方路由配置中放置一個新的子路由並將其指向您自己的控制器。或者,正如我上面所說,添加一些表單元素到現有的表單。 –
http://php.net/manual/en/keyword.extends.php – cptnk
@Dante您是指WordPress的掛鉤? –
@RayhanMuktader,我還沒有使用wordpress代碼,但經過一點搜索,我認爲這是事情。 WordPress的鉤子如何工作,以及如何在zend框架中實現這一點? – Dante