私は初心者です。laravel など、多くのツール クラスは直接宣言することで使用できることがわかりました。
リクエスト $request;
$request->get();
これには疑問を感じますが、クラス変數(shù)を宣言するとコードがインスタンス化されるのでしょうか?
Baidu で検索したところ、PHP 言語でこの問題について質(zhì)問した人は誰もおらず、Java だけでした。Java は次のようなものです:Class1 item1;
オブジェクトを宣言
參照型を生成、參照のタイプ (オブジェクト o または From f) に関係なく、4 バイトのメモリを占有します。Class1 item1 = new Class1();
Createクラス インスタンスで、メモリの一部を開き (このメモリはクラス自體のサイズに関連します)、參照 item1 がこのメモリの開始位置を指すようにします。
その場合、$request
は Request
への単なる?yún)⒄栅扦ⅳ辍?code>Request はまだインスタンス化されておらず、メモリ內(nèi)に存在しません。では、なぜ $request
はそのメソッドを直接使用できるのでしょうか?ソース コードを確認(rèn)すると、このクラスのプロパティとメソッドは static
靜的であり、インスタンス化前にメモリ內(nèi)にすでに存在していますが、非靜的プロパティとメソッドも多數(shù)あります。非靜的メソッド!
これを直接呼び出すとポインタ例外が発生しないでしょうか?
初心者に質(zhì)問します!
PHP にはこのような構(gòu)文はありません
表示される內(nèi)容は次のようになります
Route::get('/', function (IlluminateHttpRequest $request) {
});
これは依存性注入です
http://www.golaravel.com/lara...
以下は間違いです: ソースコードをよく見てみると、答えはこんな感じでしょうか?
で
これら 2 つのコードの前に、私は use IlluminateHttpRequest;
use は名前空間を使用するだけですが、クラスを呼び出したい場合は、クラス ファイルをロードする (必須) か、自動的にロードする必要があります。 , lavavel は自動読み込みを使用するため、IlluminateHttpRequest を使用することは、Request クラスを直接使用できることと同等であると考えています。実際、Laravel は Request クラスを使用するときに多くの作業(yè)を行います。
Laravelの自動読み込み機能は以下の通りです
インスタンス化されていないクラスを使用すると、自動的にロードされてインスタンス化されることがわかります。