上节我们讲到了配置阶段,有朋友反馈说,别老说源代码直接讲讲使用就行,那从现在开始先多讲讲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()函数的作用。因为今天时间太紧,就写这么点,明天继续
发表评论 取消回复