查文檔得知 中間件
實(shí)際情況如下圖:
Webman\Route
/**
* Fallback.
* @param callable|mixed $callback
* @param string $plugin
* @return void
*/
public static function fallback(callable $callback, string $plugin = '')
{
$route = new RouteObject([], '', $callback);
static::$fallbackRoutes[$plugin] = $route;
return $route;
}
MacOS
Workerman/5.0.0
workerman/webman-framework: v1.6.14
誰告訴你們報(bào)錯(cuò),就一定要寫具體錯(cuò)誤信息的?
首先,文檔里說了可以這么用
其次,代碼這么寫,IDE就識別出錯(cuò)誤了
這就是錯(cuò)誤啊。
以上問題,要么文檔寫錯(cuò)了,要么框架的Route寫錯(cuò)了。
兩個(gè)小弟弟,還在糾結(jié)什么報(bào)錯(cuò)。
運(yùn)行試下,然后發(fā)下具體錯(cuò)誤信息。
呵呵,老大,你也要看具體錯(cuò)誤啊??
給你段代碼,自己跑自己看吧
Route::fallback(function () {
$data = ['code' => 404, 'message' => '404 not found', ];
$options = JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES;
return new Response(404, ['Content-Type' => 'application/json'], json_encode($data, $options));
})->middleware([
\app\middleware\StaticFile::class,
]);
剛剛重新下載測試了下,沒什么問題。這個(gè)功能發(fā)了挺久了,我也有做單元測試,沒有人反饋過有問題。
紅色報(bào)錯(cuò)看起來像是其他人說的函數(shù)體是空的導(dǎo)致的。
你把鼠標(biāo)放到IDE報(bào)錯(cuò)的地方會(huì)顯示錯(cuò)誤信息,截圖下就好了。
這下老實(shí)了,截至目前一共4個(gè)人說讓你發(fā)錯(cuò)誤信息!連老大都出來了,哎,怎么都叫不醒一個(gè)自以為是的人!
讓你發(fā)錯(cuò)誤信息,是幫你定位并解決問題,這讓你搞的還都是我們的錯(cuò)了。。。
PS:之前的回復(fù)咋都沒了???
這是兩年前的帖子
使用Route::fallback無法設(shè)置中間件,且沒有執(zhí)行到全局中間件
問題已經(jīng)存在了,今天查文檔也是在手冊里新鮮查的。依然描述著(不過仍然可以通過Route::fallback(function(){})->middleware()添加中間件)
這就是問題啊。
所以我想換個(gè)角度描述一下這個(gè)問題,我以為有圖就有真相。沒想到炸出一群“懷疑人生”的人(都懷疑人家是錯(cuò))
懷疑我代碼寫錯(cuò)的
懷疑我的IDE太Low的
懷疑沒有報(bào)錯(cuò)信息就不算問題的
我太難了??
哈哈,我之前和他說了,讓他發(fā)下具體錯(cuò)誤,他說 “報(bào)錯(cuò)已不是重點(diǎn)” “重點(diǎn)是重點(diǎn)是報(bào)錯(cuò)了” 什么的。。
他的意思是IDE紅了,就一定是框架錯(cuò)了,還質(zhì)問我們 “誰告訴你們報(bào)錯(cuò),就一定要寫具體錯(cuò)誤信息的?”
什么 “IDE就識別出錯(cuò)誤了,要么手冊錯(cuò)了,要么框架路由錯(cuò)了”。就不懷疑下IDE或或者自己寫法問題。。
反正就是不發(fā)錯(cuò)誤,可能是他根本沒運(yùn)行吧。
建議群主回恢復(fù)下回復(fù)記錄。
vendor/workerman/webman-framework/src/Route.php 源碼如下
/**
* Fallback.
* @param callable|mixed $callback
* @param string $plugin
* @return void
*/
public static function fallback(callable $callback, string $plugin = '')
{
$route = new RouteObject([], '', $callback);
static::$fallbackRoutes[$plugin] = $route;
return $route;
}
將注釋文檔中的返回值改成Route, VScode就不會(huì)報(bào)錯(cuò)了
/**
* Fallback.
* @param callable|mixed $callback
* @param string $plugin
* @return Route
*/
public static function fallback(callable $callback, string $plugin = '')
{
$route = new RouteObject([], '', $callback);
static::$fallbackRoutes[$plugin] = $route;
return $route;
}