在test控制器內(nèi)接管方法
public function __call($method, $request)
{
$path = explode('/', request()->path());
$action = $path[4] ?? 'index';
$class = "resource\" . $method;
$handler = new $class();
return $handler->$action($request);
}
當(dāng)請求一個不存在的地址
如test/demolist 可以成功接管到
但是當(dāng)請求test/demolist/create?xxx=xxx時 卻會被Route::fallback接管
這個是什么原因呢
test/demolist/create?xxx=xxx 改成 test/demolist?xxx=xxx
php 里__call() 是用來調(diào)用當(dāng)前類不存在的方法時調(diào)用的,不是調(diào)用不存在的類的時候調(diào)用的,
所以你說的無法通過 php 的__call()來實現(xiàn)。
你可以設(shè)置 Route::fallback 來分析當(dāng)前url,自己分割然后決定調(diào)用哪個類的哪個方法。
額 你應(yīng)該沒有理解我的意思 我是在方法內(nèi)部示例化類 怎么實例化 取決于路徑和參數(shù)
我奇怪的是 test/demolist 可以請求到 test類的_call方法 test/demolist/xxx 多一級就請求不到了
demolist/xxx 就不是一個合法的方法名,也就是不可能作為方法觸發(fā)__call()
還有根據(jù)手冊,默認(rèn)路由 test/demolist/xxx 不會訪問 test控制器,它訪問的可能是
訪問的是以下控制器
test/controller/demolistController.php 方法名xxx
controller/test/demolistController.php 方法名xxx
不是訪問 test控制器