Bootstrap


Introduction

bootstrap.php 文件被加载时, 所有 public _init 开头的函数都会被依次执行

bootstrap.php 文件里的函数执行是独立的, 框架无上下文使用

调用方法 bootstrap 会加载 Bootstrap.php文件, 默认路径: asf.root_path/application/(Bootstrap.php OR bootstrap.php)

Examples

Example #1

以下例子中 _initHow 方法, 会被第一个调用。 然后依次调用函数 _initAre

<?php
class Bootstrap
{
    public function _initHow()
    {
    }
    
    public function _initAre()
    {
    }
}

Example #2

以下例子中的执行顺序为: 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();

Example #3

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());
    }
}