@yaf函數方法使用規則
1.yaf中類的加載規則, 都是一樣的: Yaf規定類名中必須包含路徑信息, 也就是以下划線"_"分割的目錄信息. Yaf將依照類名中的目錄信息, 完成自動加載.例如:/admin_login 表示這樣的路徑:APP_PATH/admin/login.php.
2.yaf要加載類庫文件,可以直接在php.ini里加入yaf.library="類庫文件所在的目錄";
@1.Yaf_Bootstrap_Abstract
1.bootstrap是yaf提供的一個全局配置的入口, 當bootstrap被調用的時刻, Yaf_Application就會默認的在APPLICATION_PATH下, 尋找Bootstrap.php, 而這個文件中, 必須定義一個Bootstrap類, 而這個類也必須繼承自Yaf_Bootstrap_Abstract.
2.bootstrap里定義的_init方法會自動被yaf調用;
1 <?php 2 class Bootstrap extends Yaf_Bootstrap_Abstract 3 { 4 public function _init() 5 { 6 echo 'love'; //調用時會自動顯示 7 } 8 }
@2.Yaf_Plugin_Abstract
yaf插件類,繼承的類將通過Yaf_Dispatcher::registerPlugin()調用;
定義一個插件類 class LayoutPlugin extends Yaf_Plugin_Abstract { private $_layoutDir; private $_layoutFile; private $_layoutVars = array(); public function __construct($layoutFile, $layoutDir=null) { $this->_layoutFile = $layoutFile; $this->_layoutDir = ($layoutDir) ? $layoutDir : APP_PATH.'views/'; } public function __set($name, $value) { $this->_layoutVars[$name] = $value; /** * 例子 * $my = new LayoutPlugin(my.html); * $my->name='cj'; * echo $my->name; //if add __get() , will output cj */ } public function dispatchLoopShutDown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { } public function dispatchLoopStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) { } public function postDispatch (Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { //獲取已經設置響應的Body $body = $response->getBody(); //清除已經設置響應的body $response->clearBody(); $layout = new Yaf_View_Simple($this->_layoutDir); $layout->content = $body; $layout->assign('layout', $this->_layoutVars); //設置響應的body $response->setBody($layout->render($this->_layoutFile)); } public function preDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ){ } public function preResponse ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ){ } public function routerShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ){ } public function routerStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ){ } } 在bootstrap類中定義方法進行引用 public function _initLayout(Yaf_Dispatcher $dispatcher) { $layout = new LayoutPlugin('index.html'); $dispatcher::registerPlugin($layout); }
@3.Yaf_Controller_Abstract
Yaf_Controller_Abstract::getView()獲取當前的視圖引擎
Yaf_Controller_Abstract::display()此方法在Yaf_Dispatcher::disableView()關閉自動渲染之后顯示渲染;
Yaf_Controller_Abstract::forward()此方法將當前的請求轉交給另外的方法處理,但會執行完該方法的所有代碼,如果需要立即跳轉,用return結束執行;
Yaf_Controller_Abstract::getRequest()獲取當前請求的實例,返回Yaf_Request_Abstract實例;
1 class IndexController extendes Yaf_Controller_Abstract 2 { 3 public function init() 4 { 5 $request = $this->getRequest(); 6 $request->getParams(); 7 } 8 }
@4.Yaf_Dispatcher
Yaf_Dispatcher::disableView()關閉自動渲染;在自己要輸出一個視圖時使用
Yaf_Dispatcher::getInstance()獲取當前的Yaf_Dispatcher的實例
1 Yaf_Dispatcher::getInstance()->disableView();//關閉自動渲染,改為主動輸出視圖;
Yaf_Dispatcher::registerPlugin(Yaf_Plugin_Abstract $plugin)注冊一個插件;
Yaf_Dispatcher::getApplication()獲取當前的app實例;
@5.Yaf_Application
Yaf_Application::app()返回當前的app實例,Yaf_Dispatcher::getApplication()獲取當前的app實例;
Yaf_Application::getConfig()獲取當前Yaf_Config_Abstract的實例,也就是獲得當前APP的配置;
1 <?php 2 $config = array( 3 "application"=>array( 4 "directory"=>realpath(dirname(__FILE__)).'/application'; 5 ) , 6 ); 7 8 $application = new Yaf_Application($config); 9 print_r($application->getConfig()); 10 ?>
@6.Yaf_Request_Http
Yaf_Request_Http::getPost返回post變量;
1 $data['name'] = Yaf_Request_Http::getPost('name'); 2 3 $data['name'] = $_POST['name']; 4 5 兩者效果一致,小項目用下面的,大項目用到封裝,要考慮到安全性,用上面的方法;
Yaf_Request_Http::getQuery返回get變量;
1 $_request_http = new Yaf_Request_Http(); 2 $data['id'] = intval($_request_http::getQuery('id')); 3 4 $data['id'] = intval($_GET['id']); 5 6 兩者效果一致,原因同上 7 8 //get與post的區別: 9 1.get從服務器上獲取數據,post向服務器傳送數據; 10 2.get執行效率高,post安全性高; 11 3.在進行數據查詢時建議用get, 進行數據添加、修改、刪除時建議用post;
@7.Yaf_Request_Abstract
Yaf_Request_Abstract::getParam($name, $defaultValue)獲取當前請求中的路由參數, 路由參數不是指$_GET或者$_POST, 而是在路由過程中, 路由協議根據Request Uri分析出的請求參數.
1 class IndexController extends Yaf_Controller_Abstract 2 { 3 public function indexAction() 4 { 5 echo 'userid:'.$this->getRequest()->getParam('id',0); 6 } 7 }
Yaf_Request_Abstract_getParams獲取當前請求中的所有路由參數, 路由參數不是指$_GET或者$_POST, 而是在路由過程中, 路由協議根據Request Uri分析出的請求參數.