1 yaf 是c写的扩展,高性能框架.
学习一个框架应该从下面几个方面入手:
a 大致的目录结构;
b 有关的配置文件以及所需的环境怎么配置(yaf就需要安装yaf扩展);
c 入口文件 ;
d 路由规则(先了解默认的路由规则);
e 框架封装好的基础类;
f 配置环境,写 hello world;
g 写个简单的mvc的demo;
2 目录结构
+ public
|- index.php //入口文件
|- .htaccess //重写规则
|+ css
|+ img
|+ js
+ conf
|- application.ini //配置文件
+ application
|+ controllers
|- Index.php //默认控制器
|+ views
|+ index //控制器
|- index.phtml //默认视图
|+ modules //其他模块
|+ library //本地类库 (全局的)
|+ models //model目录
|+ plugins //插件目录
2 配置文件
application.ini包含了yaf 框架的设置,先打开yaf[手册] (http://www.laruence.com/manual/yaf.config.html#yaf.config.bref)
名称 值类型 说明
application.directory String 应用的绝对目录路径 ( 必须配置项)
application.ext String php PHP脚本的扩展名
application.bootstrap String Bootstrapplication.php Bootstrap路径(绝对路径)
application.library String application.directory + "/library" 本地(自身)类库的绝对目录地址
application.baseUri String NULL 在路由中, 需要忽略的路径前缀, 一般不需要设置, Yaf会自动判断.
application.dispatcher.defaultModule String index 默认的模块
application.dispatcher.throwException Bool True 在出错的时候, 是否抛出异常
application.dispatcher.catchException Bool False 是否使用默认的异常捕获Controller, 如果开启, 在有未捕获的异常的时候, 控制权会交给ErrorController的errorAction方法, 可以通过$request->getException()获得此异常对象
application.dispatcher.defaultController String index 默认的控制器
application.dispatcher.defaultAction String index 默认的动作
application.view.ext String phtml 视图模板扩展名
application.modules String Index 声明存在的模块名, 请注意, 如果你要定义这个值, 一定要定义Index Module
application.system.* String * 通过这个属性, 可以修改yaf的runtime configure, 比如application.system.lowcase_path, 但是请注意只有PHP_INI_ALL的配置项才可以在这里被修改, 此选项从2.2.0开始引入
基本设置 :
application.directory = APP_PATH "/application " 应用的根目录
application.dispatcher.catchException = TRUE 捕获异常
application.dispatcher.throwException = TRUE 抛出异常
application.modules=index,admin 有两个模块
application.view.ext = html 视图的扩展名为html(默认为phtml)
3 安装yaf扩展 参照yaf官方文档
4 入口文件
<?php
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
$app->run();
定义了 入口文件的目录的常量,然后加载配置文件,启动框架!
5 路由规则
他的默认路由是这样的
www.xxx.com/m/c/a
请求www.xxx.com下m模块,c控制器,a方法
当然他也可以自己定义路由
6 封装类