bootstrap.php 文件被加载时, 所有 public _init 开头的函数都会被依次执行
bootstrap.php 文件里的函数执行是独立的, 框架无上下文使用
调用方法 bootstrap 会加载 Bootstrap.php文件, 默认路径: asf.root_path/application/(Bootstrap.php OR bootstrap.php)以下例子中 _initHow 方法, 会被第一个调用。 然后依次调用函数 _initAre
<?php class Bootstrap { public function _initHow() { } public function _initAre() { } }
以下例子中的执行顺序为: Bootstrap类中 _initOne方法第一个调用, _initTwo方法第二个调用。
IndexService类中 indexAction方法是第三个调用
<?php $configs = array( 'asf' => array( 'root_path' => realpath(dirname(__FILE__)), ) ); class IndexService { public function indexAction() { } } class Bootstrap { public function _initOne() { echo '_initOne', PHP_EOL; } public function _initTwo() { echo '_initTwo', PHP_EOL; } } $handle = new Asf_Application($configs); $handle->bootstrap()->run();
In the function Bootstrap, Call with function Of Dispatcher
<?php class Bootstrap { public function _initHow($dispatcher) { $dispatcher->setDefaultModule('api')->setDefaultService('index') ->setDefaultAction('check'); var_dump($dispatcher->getRequest()->getModuleName()); var_dump($dispatcher->getRequest()->getServiceName()); var_dump($dispatcher->getRequest()->getActionName()); } /* Same to _initHow($dispatcher) */ public function _initTwo() { $dispatcher = Asf_Dispatcher::getInstance(); $dispatcher->setDefaultModule('api')->setDefaultService('index') ->setDefaultAction('user'); var_dump($dispatcher->getRequest()->getModuleName()); var_dump($dispatcher->getRequest()->getServiceName()); var_dump($dispatcher->getRequest()->getActionName()); } }