关于yaf,php扩展实现的框架,做者鸟哥:http://www.laruence.com/。php
写着篇文章的目的是是为了更快的熟悉yaf。html
文档,http://www.laruence.com/manual/。mysql
一、安装linux
windowsql
下载:http://pecl.php.net/package/yaf/2.3.2/windows数据库
(注意php版本、64/32位系统,thread_safe模式根据你phpinfo()里的Thread Safety是否enable决定)bootstrap
安装:直接解压到php的ext目录下就行了,修改php.ini )windows
extension=php_yaf.dll
linuxapp
下载:http://pecl.php.net/package/yaf(注意php版本)框架
安装: 解压缩之后, 进入Yaf的源码目录, 依次执行(其中PHP_BIN
是PHP的bin目录):
$PHP_BIN/phpize ./configure --with-php-config=$PHP_BIN/php-config make make install
而后查看phpinfo(),若是出现yaf扩展表示安装成功。
二、Hello world
这个偷懒,直接去看文档就行了:http://www.laruence.com/manual/tutorial.firstpage.html。
三、配置
配置方面说实话,看开发人的习惯了,楼主说下本身的
首先,yaf.environ博主放在了php.ini中,这样能够必定程度上区分生产环境与开发环境,从而减小误上线配置的问题。
3.一、conf
楼主分红了主配置和经常使用配置,先贴图
主配置:application.ini,(application.directory,use_namespace等配置项)
经常使用配置:mysql.ini,route.ini...
这些配置实际上是按需加载的,方法加载方式:new Yaf_Config_Ini($inifile, ini_get('yaf.environ'));
这时候出现了一个问题,就是若是一个请求屡次用到了数据库,咱们就须要把配置存起来而不是每次去open这个文件。
楼主简单封了一个配置的类,贴代码
<?php
/**
* get & init config
* @author wangzhitao
*
*/
class LibConfig{ private static $_DB_CONFIG = null; private static $_ROUTE_CONFIG = null; public static function getDbConfig() { if (self::$_DB_CONFIG===null){ $inifile = APP_PATH . '/conf/mysql.ini'; self::$_DB_CONFIG = new Yaf_Config_Ini($inifile, ini_get('yaf.environ')); } return self::$_DB_CONFIG; } public static function getRouteConfig() { if (self::$_ROUTE_CONFIG===null){ $inifile = APP_PATH . '/conf/route.ini'; self::$_ROUTE_CONFIG = new Yaf_Config_Ini($inifile, ini_get('yaf.environ')); } return self::$_ROUTE_CONFIG; } }
固然你也能够用yaf的register。
Yaf_Registry::set($name, $value);
Yaf_Registry::get($name);
3.二、路由
路由就要说到bootstrap了,由于博主是在bootstrap里面加载的路由配置
在公共入口文件里这样写,$app->bootstrap()->run();
yaf会自动去application目录下寻找Bootstrap.php,贴代码
<?php class Bootstrap extends Yaf_Bootstrap_Abstract{ public function _initConfig() { $config = Yaf_Application::app()->getConfig(); Yaf_Registry::set("config", $config); } /** * 实例化路由 * @param Yaf_Dispatcher $dispatcher */ public function _initRoute(Yaf_Dispatcher $dispatcher) { $router = Yaf_Dispatcher::getInstance()->getRouter(); $routeConf = LibConfig::getRouteConfig(); $router->addConfig($routeConf->routes); } }
route.ini,毕竟会遇到不少自定义的路由配置
[common] routes.bbsindex.type="rewrite" routes.bbsindex.match="/bbs/:name/:value" routes.bbsindex.route.controller=bbs routes.bbsindex.route.action=index routes.bbslist.type="rewrite" routes.bbslist.match="/bbslist/:name/:value" routes.bbslist.route.controller=bbs routes.bbslist.route.action=index [develop : common]
四、其余
一、自动加载方式
Controller 默认模块下为{项目路径}/controllers/, 不然为{项目路径}/modules/{模块名}/controllers/
Model {项目路径}/models/
Plugin {项目路径}/plugins/
二、命名方式
controller:文件名Xxx.php,类名XxxController
model:文件名Xxx.php,类名Dir_XxxModel
好比model下的Bbs下的Post.php,实例化方式为$postObj = new Bbs_PostModel();
OK,想到再补充