<?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);
?>
依賴注入
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.