zf2でコードをトレースすると、アプリケーションサービスが登録されている場所が見つかりません。これがapplication.phpのコードです
public static function init($configuration = array())
{
$smConfig = isset($configuration['service_manager']) ? $configuration['service_manager'] : array();
$serviceManager = new ServiceManager(new Service\ServiceManagerConfig($smConfig));
$serviceManager->setService('ApplicationConfig', $configuration);
$serviceManager->get('ModuleManager')->loadModules();
return $serviceManager->get('Application')->bootstrap();
}
コード「$serviceManager->get('Application')」は、アプリケーションサービスを取得するためのものです。しかし、アプリケーションサービスはどこに登録されましたか?
次に、アプリケーションサービスがZF2 / library / Zend/MoudleManagerのコード行「$this->getEventManager()-> trigger(ModuleEvent :: EVENT_LOAD_MODULES_POST、$ this、$ this-> getEvent())」に関連していることがわかりました。 /MoudleManager.php
public function loadModules()
{
if (true === $this->modulesAreLoaded) {
return $this;
}
$this->getEventManager()->trigger(ModuleEvent::EVENT_LOAD_MODULES, $this, $this->getEvent());
/**
* Having a dedicated .post event abstracts the complexity of priorities from the user.
* Users can attach to the .post event and be sure that important
* things like config merging are complete without having to worry if
* they set a low enough priority.
*/
$this->getEventManager()->trigger(ModuleEvent::EVENT_LOAD_MODULES_POST, $this, $this->getEvent());
return $this;
}
もう1つの質問は、「ModuleEvent :: EVENT_LOAD_MODULES_POST、つまりloadModules.postです。トリガー関数の最初のパラメーターは関数名です。loadModules.postも関数ですか?どこで定義されましたか?
前もって感謝します。