框架的乙個重要功能就是類的自動載入了,在第乙個demo的時候我們就約定自己的專案的目錄結構,框架就基於這個目錄結構來自動載入需要的類檔案。
yaf在自啟動的時候, 會通過spl註冊乙個自己的autoloader, 出於效能的考慮, 對於框架相關的mvc類, yaf autoloader只以目錄對映的方式嘗試一次.
具體的目錄對映規則如下:
對於控制器 controller 預設模組下為/controllers/, 否則為/modules//controllers 比如indexcontroller,這自動載入檔案 /controllers/index.php
對於model 載入路徑為/models/ 類似比如usermodel則自動載入/models/user.php
其它規則比如actions,plugin也都類似
而對於非框架mvc相關的類, yaf支援全域性類和自身類的兩種載入方式, 並且yaf支援大小寫敏感和不敏感兩種方式來處理檔案路徑.
全域性類和自身類(本地類)
yaf為了方便在一台伺服器上部署的不同產品之間共享公司級別的共享庫, 支援全域性類和本地類兩種載入方式.
全域性類是指, 所有產品之間共享的類, 這些類庫的路徑是通過ap.library在php.ini(當然,如果php在編譯的時候, 支援了with-config-file-scan-dir,那麼也可以寫在單獨的ap.ini中)
而本地類是指, 產品自身的類庫, 這些類庫的路徑是通過在產品的配置檔案中, 通過ap.library配置的.在yaf中, 通過呼叫yaf_loader的registerlocalnamespace方法, 來申明那些類字首是本地類, 即可.
注意:在use_spl_autoload關閉的情況下, yaf autoloader在一次找不到的情況下, 會立即返回, 而剝奪其後的自動載入器的執行機會.
yaf中類的載入規則
類的載入規則, 都是一樣的: yaf規定類名中必須包含路徑資訊, 也就是以下劃線"_"分割的目錄資訊. yaf將依照類名中的目錄資訊, 完成自動載入. 如下的例子, 在沒有申明本地類的情況下:
乙個對映的例子zend_dummy_foo
//yaf將在如下路徑尋找類foo_dummy_bar
/foo/dummy/bar.php
而, 如果通過如下方式呼叫了registerlocalnamespace:註冊本地類
[php]view plain
copy
//申明, 凡是以foo和local開頭的類, 都是本地類
$loader = yaf_loader::getignstance();
$loader->registerlocalnamespace(array("foo", "local"));
Yaf零基礎學習總結5 Yaf類的自動載入
框架的乙個重要功能就是類的自動載入了,在第乙個demo的時候我們就約定自己的專案的目錄結構,框架就基於這個目錄結構來自動載入需要的類檔案。yaf在自啟動的時候,會通過spl註冊乙個自己的autoloader,出於效能的考慮,對於框架相關的mvc類,yaf autoloader只以目錄對映的方式嘗試一...
Yaf零基礎學習總結2 Yaf框架的安裝
yaf零基礎學習總結1 yaf框架簡介 我們對yaf框架有那麼乙個大概的了解了,但是對於程式設計師來說,那些文字都是表面的,他們最想的就是開始敲 了。當然這也是學習yaf框架最有效的方法,敲得越多肯定學得越快,對於任何語言來說也是一樣的,在寫 之前我們得把yaf框架安裝上。相比於其它php框架,ya...
Yaf零基礎學習總結4 Yaf的配置檔案
yaf通過在不同的環境中,選取不同的配置節,再結合配置可繼承,來實現一套配置適應多種環境 線上,測試,開發 yaf乙個必不可少的配置項,也就是配置應用專案的絕對路徑 上一節我們對這一項的配置就是 yaf可選的配置項 此外,yaf還有一些可選的配置項,說是可選,其實就是框架已經給這些配置項指定預設值的...