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