Rolavelで独自のリクエストオブジェクトをロールバックする
拡張または変更するには複数の方法があります
マクロ
あなたはすでに約
既存のメソッドをオーバーライドまたは変更できません.
これらの新しい方法がどこから来ているかは、明らかでありません.
NO NO IDE自動補完.
カスタムリクエストオブジェクト
自分で作るのが好きです
さて、この新しいカスタムクラスをベースとしてララベルを教える必要があります.
単に
ハッピーコーディング!
Request
ラーラベルのオブジェクト.あなたの方法を見せたいのですが、私の意見では最もきれいなものです.マクロ
あなたはすでに約
macro
メソッド.これは、新しい方法を導入する最も明白な方法ですRequest
オブジェクトには若干の欠点があります.Request::macro('project', function () {
return $this->user();
});
この解決策は簡単ですが、いくつかの欠陥があります.既存のメソッドをオーバーライドまたは変更できません.
これらの新しい方法がどこから来ているかは、明らかでありません.
NO NO IDE自動補完.
カスタムリクエストオブジェクト
自分で作るのが好きです
Request
オブジェクト.<?php
namespace App\Http;
use Illuminate\Http\Request as LaravelRequest;
class Request extends LaravelRequest
{
/**
* Get the team making the request.
*
* @param string|null $guard
* @return mixed
*/
public function team($guard = null)
{
return $this->user($guard);
}
}
それはシンプルでクリーンで簡単です.“マクロ”を介して新しいメソッドを導入するよりもはるかに良い.さて、この新しいカスタムクラスをベースとしてララベルを教える必要があります.
単に
handle
メソッドでApp\Http\Kernel
クラスを使用するクラスRequest
オブジェクト.<?php
namespace App\Http;
use App\Http\Request;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
// ...
/**
* Handle an incoming HTTP request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function handle($request)
{
return parent::handle(
Request::createFrom($request)
);
}
}
... そして最後にApp\Http\Request
コンテナーは常に同じインスタンスを返します.$this->app->alias('request', Request::class);
ハッピーコーディング!
Reference
この問題について(Rolavelで独自のリクエストオブジェクトをロールバックする), 我々は、より多くの情報をここで見つけました https://dev.to/titasgailius/custom-request-object-in-laravel-39piテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol