Yaf框架的使用总结
从入wb以来,我们的项目就没有离开过Yaf,在这里谈谈我对Yaf这个框架的使用感触吧。 实例是建立在一个管理系统项目基础上:
从鸟哥的博客上介绍:“Yaf是一个C语言编写的框架”,主要特定如下(摘自鸟哥网站):
1. 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.
2. 所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
3. 更短的内存周转周期, 提高内存利用率, 降低内存占用率.
4. 灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
5. 高性能的视图引擎.
6. 高度灵活可扩展的框架, 支持自定义视图引擎, 支持插件, 支持自定义路由等等.
7. 内建多种路由, 可以兼容目前常见的各种路由协议.
8. 强大而又高度灵活的配置文件支持. 并支持缓存配置文件, 避免复杂的配置结构带来的性能损失.
9. 在框架本身,对危险的操作习惯做了禁止.
10. 更快的执行速度, 更少的内存占用.
那么,我们到底怎么用的,我们这里看下:
安装
从github上描述,Yaf需要php5.2以上版本,我们的系统都升级到了php7,所有开发都在php7下面。
我比较倾向于源码安装:
sudo phpize
./configure --with-php-config=/path/to/php-config
make && make install
代码路径及说明
├── application
│ ├── Bootstrap.php // Yaf web启动文件
│ ├── composer.json // composer依赖的文件,
│ ├── config // 一些配置文件
│ ├── controllers // controller模块
│ ├── library // 项目包含的一些公共的包
│ ├── models // 项目的模型层
│ ├── plugins // 中间件的内容
│ ├── vendor // composer加载进来的一些包,这一部分是后来才加进来的
│ └── views // 视图层
└── public // 项目的入口文件和一些公共资源文件
└── index.php // 项目的入口文件,nginx配置项直接指向这个文件
Yaf项目配置文件
index.php中有个指向配置文件的地方, 这个代表会加载配置文件config/application.ini,里面会有一些Yaf的相关配置:
$app = new Yaf_Application(APPLICATION_PATH . '/config/application.ini');
这个里面有一项:
application.dispatcher.defaultRoute.type="map"
application.dispatcher.defaultRoute.controllerPrefer=true
没有使用复杂的路由方式,如上配置,代表每个uri路径对应一个文件,如: /a/b/c /a/b_c 都对应 controllers/A/B/C.php 中的 class A_B_CController 中的indexAction方法,
后来我在plugins里面加了一个重写机制: 对应 /a/b_c 的路径,对应 class A_BController 的cAction的方法。
实际上不配置上面的这项内容( application.dispatcher.defaultRoute.controllerPrefer=true)也应该可以打到效果。
常用的命令_变量的赋值
在controller中利用下面语句传递参数到页面上:
$this->getView()->assign('rate_list', $rate_list);
然后在,vierw里面的页面里使用rate_list这个内容是哪个。
常用的命令_指明view
在 controller 的类的方法中也可指明需要加载的view。如下,在语句后面必须使用exit()退出,否则还会去寻找默认的view而引发错误。
$this->getView()->display('index/configindex.phtml');
常用的命令_注册本地类库
Yaf_Loader::getInstance()->registerLocalNameSpace(['User', 'Permission', 'Data' ... ... ]);
上面的意思是:注册本地类名前缀, 这部分类名将会在本地类库查找 里面的每个item可以对应一个.php文件,也可对应一个文件夹。
未完,待续。。。