上节我们讲到了配置阶段,有朋友反馈说,别老说源代码直接讲讲使用就行,那从现在开始先多讲讲yaf的使用,等以后再说源代码的分析,如果使用的需要的话就稍微带一点。

上一节我们说到了,初始化配置,也看到了可以使文件,也可以使数组,内部会根据输入的不同来选择不同的处理机制,也就是Yaf_Config_Ini或者Yaf_Config_Simple来处理。

实例化可以这样写:

$app = new Yaf_Application(APP_PATH.'/conf/application.ini');
$app->run();

或者如下这样

//通过Yaf_Config_Ini来解析配置文件
$config = new Yaf_Config_Ini(APP_PATH.'/conf/application.ini',ini_get("yaf.environ"));
//转换成数组
$config = $config->toArray();
$app = new Yaf_Application($config);
$app->run();

我们查看一下Yaf_Application中的主要方法

Yaf_Application — The Yaf_Application class
    Yaf_Application::app — 获取当前的Yaf_Application实例
    Yaf_Application::bootstrap — 调用bootstrap
    Yaf_Application::clearLastError — 清除最后的错误信息
    Yaf_Application::__clone — Yaf_Application不能被克隆
    Yaf_Application::__construct — Yaf_Application的构造函数
    Yaf_Application::__destruct — 析构函数
    Yaf_Application::environ — 获取当前Yaf_Application的环境名
    Yaf_Application::execute — 运行回调函数
    Yaf_Application::getAppDirectory — 获取应用的目录
    Yaf_Application::getConfig — 获取 Yaf_Config_Abstract 的实例
    Yaf_Application::getDispatcher — 获取 Yaf_Dispatcher 的实例
    Yaf_Application::getLastErrorMsg — 获取最近产生的错误的错误信息
    Yaf_Application::getLastErrorNo — 获取最后产生的错误的错误代码
    Yaf_Application::getModules — 获取在配置文件中申明的模块
    Yaf_Application::run — 运行 Yaf_Application
    Yaf_Application::setAppDirectory — 改变应用目录
    Yaf_Application::__sleep — Yaf_Application 不能被序列化
    Yaf_Application::__wakeup — Yaf_Application 不能被反序列化

其中,app是重新获取Yaf_Application实例,Yaf_Application::app()来获取,所以更简单,我们ini的配置,左边时配置项,右边是默认值

application.directory       
application.ext                           "php" 
application.view.ext                      "phtml"   
application.modules                       "index"   
application.library                        application.directory . "/library"   
application.library.directory              application.directory . "/library"   
application.library.namespace              ""   
application.bootstrap                      application.directory."/Bootstrap". application.ext  
application.baseUri                        ""   
application.dispatcher.defaultRoute     
application.dispatcher.throwException      1    
application.dispatcher.catchException      0    
application.dispatcher.defaultModule       "index"  
application.dispatcher.defaultController   "index"  
application.dispatcher.defaultAction       "index"  
application.system   

为什么说ini配置了呢?因为如果我们使用Yaf_Application::bootstrap方法,就是调用Bootstrap.php文件,而默认地址是application.directory."/Bootstrap".application.ext这个我们可以自己修改。

而Bootstrap是用来在Application运行(run)之前做一些初始化工作的机制.而且Bootstrap以规定_init开头的方法来执行,并且按照命名顺序先后执行。如下

class Bootstrap extends Yaf_Bootstrap_Abstract{

    public function _initConfig(Yaf_Dispatcher  $dispatcher){
        //可以是这样
        var_dump($dispatcher->getApplication()->getConfig()->toArray());
        //也可以使这样
        var_dump(Yaf_Application::app()->getConfig()->toArray());
    }

    public function _initRequest(Yaf_Dispatcher $dispatcher){
        var_dump($dispatcher->getRequest());
    }
}

先运行_initConfig再运行_initRequest,就打印了这些输出,其中YafApplication::app()是静态方法,可以获取实例在获取config的配置信息,这里就体现了YafApplication::app()函数的作用。

因为今天时间太紧,就写这么点,明天继续

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部