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在追求極致效率,架構極簡的同時,需要我們一點一點針對項目去完善,極簡的設計帶來明朗清晰的開發思路