問題タブ [late-static-binding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP - 親クラスから静的メソッドを呼び出す
私は次のクラス階層を持っていますMDLUser
:MDLPersistentObject
MDLPersistentObject
配列を返す静的メソッドがあります。ではMDLUser
、静的メソッドをオーバーライドして、MDLPersistentObject
の配列を返し、独自のデータを追加してから、新しい配列を返します。
しかし、parent::myArrayReturningMethod()
内部MDLUser
で呼び出すと、 の実装が返されるだけですMDLUser
(つまり、 の配列データが欠落していますMDLPersistentObject
。ただし、悪い習慣の方法で を呼び出すと、MDLPersistentObject::myArrayReturningMethod()
期待どおりの結果が返されます。
parent::
静的メソッドの親実装を呼び出すための正しい遅延静的バインディング メソッドではありませんか?
私のコードがどのように見えるか疑問に思っている場合:
MDLPersistentObject のメソッド:
MDLUser のメソッド:
php - なぜ新しい静的を返すのですか? (PHP)
一部の開発者がnew staticを返す 1 つのメソッドを作成するのはなぜですか? new staticを返すメソッドを持つ理由は何ですか? static と self の違いや、 static と self の意味を尋ねているわけではありません。たとえば、1 つの単純なクラスを次に示します。
ご覧のとおり、new staticを返すstaticメソッドmake()があります。次に、一部の開発者は次のように他のメソッドを呼び出します。
これの目的は何ですか?ここでは、新しい Expression構文を使用していないことがわかりました。それがポイントである場合は、すべてのメソッドを静的にしないのはなぜですか? 違いは何ですか、新しい静的を返す 1 つのメソッドを使用する理由は何ですか(他のメソッドは静的ではありません)。
php - static::whereIn としての Laravel の遅延静的バインディング
OK、読んで、メソッドと変数の PHP レイト スタティック バインディングについてある程度理解していると感じました。しかし、 Laravel 5 のこのコードの 28 行目からwhereIn
、Laravel Collection メソッドであるwith を使用します。ここで何が起こっているのかわかりませんstatic::whereIn()
。使用できるように、コレクションはどこにありますかwhereIn()
。
php - 親クラスを介して呼び出されるクラスのプロパティを定義する
データベース クラスが継承される親クラスを (遅延静的バインディングを使用して) 作成しました。各テーブル列を子クラスのパブリック プロパティとして割り当てるコンストラクタを作成しようとしています。これまでのところ、コンストラクターを子クラスに記述できましたが、これは問題なく動作しますが、すべての子クラスのプロパティが自動的に定義されるように、それを親クラスに配置したいと考えています。これが私の子クラスです:
親でこのコンストラクターを使用するには、呼び出されたクラス プロパティを定義できる必要があります。
前もって感謝します。
php - 関数の戻り値を PHP の動的クラス名として直接使用できないのはなぜですか?
PHP 5.3 以降では、変数をクラス名として使用できます。これは、オブジェクトのインスタンス化だけでなく、静的メソッドにも使用できます。
ただし、実際の変数の代わりに関数またはメソッドの戻り値を使用しようとすると、エラーが発生します。
一方、これは問題なく機能します。
何を与える?PHP の (5.6) シンタックス プロセッサでバグを見つけたのですか?