1.Yaf的library和model的文件命名规则和调用
1.1在项目中,往往需要封装一些,如redis,不同的产品需要用不同的库等等等,这就涉及到封装
1.在 Yaf 中,我们可以写一个单例模式的 redis 来提供一个入口,进行各个库(0-15)之间的实例的创建,然后在 Model 下面建立一个 BaseModel 来对接单例 Redis 的实例接口,然后各个模块的 Model 类在继承这个 BaseModel 即可实现.
2.那么,我们一般的习惯是根据 命名空间\文件路径 来实例化类或者引入,比如:
1 $object = new Path\showPath();
这就代表着实例化了 Path 下的 showPath 类文件,但是在 Yaf 中并不是这样,如果这样书写,Yaf 报错,提示文件在XXX路径下找不到
3.这是因为 Yaf 的ap.library的设置路径(默认就是在application/library目录),如果没有设置(具体设置看手册),比如 我们想写一个 Db 下面的 Redis类文件, 需要这么做
3.1 首先,我们在 library 下面新建文件夹 Db 然后 创建 Redis.php 文件,
3.2 重点来了 Redis.php 文件中的类名称 必须是 Db_Redis 也就是说 必须是 路径_文件名 的格式,
<?php class Db_Redis { private static $_instance = []; private $redis; private $host; private $port; private $auth; public function index(){ //TODO : do something } }
然后 实例化的时候直接
1 $object = new Db_Redis();
如果是静态
1 $object = Db_Redis::getInstance();
3.3 这样 Yaf 会自动在library(如果配置了ap.library会在配置的目录下)寻找这个类文件!
2.1 Model下的类文件的调用方法
1.如 想在 Model 下面建立 Chat.php ,文件中类名必须是 ChatModel ,
1 class ChatModel extends BaseModel 2 { 3 public function __construct(){ 4 //TODO : something 5 } 6 7 }
2.要是想建立实例化 需要直接使用该文件的 类名称 如:ChatModel 即可
1 $object = new ChatModel();
3.静态同Library一致
总结:Yaf在追求极致效率,架构极简的同时,需要我们一点一点针对项目去完善,极简的设计带来明朗清晰的开发思路