我目前正在測試爾康PHP一個項目,我正在尋找一種方式來自動注入自動根據已實現的接口上的某些類。PhalconPHP DI:初始化器
The Dependency Injection reference有一個例子,如果一個類實現了Phalcon\DI\InjectionAwareInterface
,它會自動將DI注入到該類中。
我想要做的是類似的。如果一個類有例如Aranea\Db\DbAdapterAware
,它應該自動在該類中注入DbAdapter。我要尋找類似於Zend框架2做一些事情(https://juriansluiman.nl/article/121/interface-injection-with-initializers-in-zend-servicemanager),DI期間在那裏的配置,你可以像這樣指定初始化:
'initializers' => array(
'logger' => function($service, $sm) {
if ($service instanceof LoggerAwareInterface) {
$logger = $sm->get('logger');
$service->setLogger($logger);
}
}
),
如果無法自動可能在PhalconPHP,我想重寫FactoryDefault
的上課並自己實施。什麼纔是注入這個邏輯的正確的地方?在get *方法中,或者在set *方法中?我假設一個方法在DI初始化期間沒有被初始化,但是在第一次調用時,所以得到*聽起來更合適?
謝謝你的建議,
的Jeroen