PHPのクラス宣言とインスタンス化の違いは何ですか?
習慣沉默
習慣沉默 2017-05-16 13:10:23
0
2
482

私は初心者です。laravel など、多くのツール クラスは直接宣言することで使用できることがわかりました。

リクエスト $request;
$request->get();

これには疑問を感じますが、クラス変数を宣言するとコードがインスタンス化されるのでしょうか?
Baidu で検索したところ、PHP 言語でこの問題について質問した人は誰もおらず、Java だけでした。Java は次のようなものです:
Class1 item1;オブジェクトを宣言
参照型を生成、参照のタイプ (オブジェクト o または From f) に関係なく、4 バイトのメモリを占有します。
Class1 item1 = new Class1();
Createクラス インスタンスで、メモリの一部を開き (このメモリはクラス自体のサイズに関連します)、参照 item1 がこのメモリの開始位置を指すようにします。

その場合、$requestRequest への単なる参照であり、Request はまだインスタンス化されておらず、メモリ内に存在しません。では、なぜ $request はそのメソッドを直接使用できるのでしょうか?ソース コードを確認すると、このクラスのプロパティとメソッドは static 静的であり、インスタンス化前にメモリ内にすでに存在していますが、非静的プロパティとメソッドも多数あります。非静的メソッド!

これを直接呼び出すとポインタ例外が発生しないでしょうか?
初心者に質問します!

習慣沉默
習慣沉默

全員に返信(2)
Ty80

PHP にはこのような構文はありません
表示される内容は次のようになります
Route::get('/', function (IlluminateHttpRequest $request) {

リーリー

});
これは依存性注入です
http://www.golaravel.com/lara...

いいねを押す +0
过去多啦不再A梦

以下は間違いです: ソースコードをよく見てみると、答えはこんな感じでしょうか?

リーリー

これら 2 つのコードの前に、私は use IlluminateHttpRequest;

を使用しました

use は名前空間を使用するだけですが、クラスを呼び出したい場合は、クラス ファイルをロードする (必須) か、自動的にロードする必要があります。 , lavavel は自動読み込みを使用するため、IlluminateHttpRequest を使用することは、Request クラスを直接使用できることと同等であると考えています。実際、Laravel は Request クラスを使用するときに多くの作業を行います。
Laravelの自動読み込み機能は以下の通りです

リーリー

インスタンス化されていないクラスを使用すると、自動的にロードされてインスタンス化されることがわかります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート