a kérdésem az, hogy a laravel miért engedélyezi, hogy csak a use Auth;
-et használja, és ne kelljen az egész könyvtárat beírnia, de ha más osztályt használok, például a Request-et, akkor az összes könyvtárat, például a use Illuminate\Http\Request;
-t, és nem tudok csak use Request;
írni
miért működik az Auth homlokzata, amikor használom, csak használja az Auth-t és más osztályokat, például a Request nem működik, amíg ki nem írom az egész könyvtárat
- Ez választ ad a kérdésedre? PHP névterek és használat 22.05.2021
Válaszok:
Egy gyors megjegyzés: ebben az összefüggésben a Illuminate\Http\Request
egy {névtér}\{osztálynév}, nem pedig egy könyvtár.
A kérés homlokzata
Először is, feltétlenül létezik egy Kérés homlokzat< /a>. Gyorsan be tudok mutatni néhány alapvető funkciót.
use Request;
Request::merge(['foo' => 'bar']);
dd(Request::all());
array:1 [▼
"foo" => "bar"
]
Ugyanezt az eredményt érheti el a request()
segédprogrammal anélkül, hogy kifejezetten importálnia kellene a homlokzatot.
Automatikus függőségi injekció
Gyanítom, hogy a kérdése valójában Laravel automatikus függőségi injekciójára vonatkozik. Ebben az esetben Laravel már megoldott és feltöltött egy Illuminate\Http\Request
példányt a színfalak mögé. Csak akkor fogja ->bind()
ezt a példányt a metódus $request
paraméteréhez, ha látja a megfelelő típusú utalást. Ezért nem tudja egyszerűen importálni a homlokzatot.
Route::get('sample/request', 'SampleController@update');
use Illuminate\Http\Request;
class SampleController
{
public function update(Request $request)
{
dd([
'class_name' => get_class($request),
'params' => $request->all()
]);
}
}
.../sample/request?foo=bar
array:2 [▼
"class_name" => "Illuminate\Http\Request"
"params" => array:1 [▼
"foo" => "bar"
]
]