سلام و عرض ادب
درباره تمرینی که استاد فرمودند، اینجا:
public function findRoute(Request $request)
{
foreach ($this->routes as $route) {
if (
in_array($request->method(), $route['methods']) &&
$request->uri() == $route['uri']
) {
return $route;
}
}
return null;
}
توی این خط:
in_array($request->method(), $route['methods'])
داره چک میشه که آیا متد ارسالی معتبر هست یا نه.
بعد توی متد run توی قسمت پیاده سازی dispatch ۴۰۴ هم میایم این شرط رو چک میکنیم:
# 404: uri not exists
if (is_null($this->currentRoute))
$this->dispatch404();
$this->dispatch($this->currentRoute);
تو این شرط گفتیم اگه متد currentRoute مقدار null رو برگردوند، خطای ۴۰۴ بهش بده.
پس اینکه ما بیایم متد invalidRequest رو پیاده سازی کنیم عملا کار خاصی انجام نمیده، چون این شرط قبلش داره چک میشه.
به طور مثال به این صورت:
private function invalidRequest($request)
{
if(is_null($this->findRoute($request)))
return true;
}
بعد هم که میایم تو متد run به این صورت صداش میزنیم:
public function run()
{
# 405: invalid request method
if ($this->invalidRequest($this->request)) {
$this->dispatch405();
}
این دقیقا میشه همون کاری که توی قسمت پیاده سازی dispatch ۴۰۴ کردیم.
اگه اشتباه متوجه شدم لطفا ایراد کار رو بفرمایین.