依賴注入

<?php class UserController { public function add() { } public function index(Request $request, DB $db) { $request->all(); $request->only(); $db -> get(); } } class Request { public function all() { echo '獲取所有的參數....<hr>'; } public function only() { echo '獲取部分參數.....<hr>'; } } class DB { public function get() { echo '獲取所有的結果集...<hr>'; } } // $request = new Request; //利用php的反射機制 // $request = new ReflectionClass('Request'); // $obj = $request->newInstance(); //聲明方向 $className = 'UserController'; $methodName = 'index'; //創建反射對象 $class = new ReflectionClass($className); $method = new ReflectionMethod($className, $methodName); //獲取當前方法的參數列表 $params = $method->getParameters(); // $cnames = []; //執行方法時的參數列表 $args = []; foreach ($params as $key => $value) { // $cnames[] = $value->getClass()->getName(); $args[] = (new ReflectionClass($value->getClass()->getName())) -> newInstance(); } //執行指定方法中的代碼 index $method->invokeArgs($class->newInstance(), $args); ?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章