相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號與變量
- PHP獲得當(dāng)日零點(diǎn)時間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時進(jìn)度條顯示的實(shí)現(xiàn)
Yii框架使用魔術(shù)方法實(shí)現(xiàn)跨文件調(diào)用功能示例
本文實(shí)例講述了Yii框架使用魔術(shù)方法實(shí)現(xiàn)跨文件調(diào)用。分享給大家供大家參考,具體如下:
目前項(xiàng)目用yii框架,controller調(diào)用facade的方法,facade調(diào)用adapter的方法,adapter調(diào)用api的方法,api封裝了sql方法,但是大部分情況下,只是單純的調(diào)用,但限于目前項(xiàng)目的規(guī)則,都要寫方法,而方法都是單純的return,于是寫了個demo,模擬了下。
<?php class aApi { public static function tt1($name, $age) { print_r($name); echo $age; } } class aAdapter { public function __call($func, $params) { $class = substr(get_called_class(), 0, -7) . 'Api'; return call_user_func_array(array($class, $func), $params); } } class aFacade { public static function __callstatic($func, $params) { // 這里也可以用debug_backtrace() $class = substr(get_called_class(), 0, -6) . 'Adapter'; $obj = new $class(); return call_user_func_array(array($obj, $func), $params); } } class aController { public function actionC() { aFacade::tt1(['name'], 'age'); } } $a = new aController; $a->actionC();