「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > __get および __set マジック メソッドが PHP で呼び出されないのはなぜですか?

__get および __set マジック メソッドが PHP で呼び出されないのはなぜですか?

2024 年 12 月 21 日に公開
ブラウズ:694

Why aren't my __get and __set magic methods being invoked in PHP?

ゲッターとセッターのオーバーロード: __get および __set マジック メソッドについて

PHP の __get および __set マジック メソッドは、次の代替手段を提供することを目的としています。伝統的なゲッターとセッター。これらのメソッドをオーバーライドすることで、開発者はプロパティのアクセスと変更の動作をカスタマイズできます。ただし、提供されたコード例に見られるように、これらのメソッドは期待どおりに呼び出されません。

問題: マジック メソッドとパブリック プロパティ

プロパティが宣言されている場合public の場合、それらはアクセス可能であるとみなされ、PHP は __get および __set メソッドを呼び出しません。この特定のインスタンスでは、$bar プロパティが public として宣言されており、マジック メソッドが冗長になっています。

マジック メソッドによるプロパティのオーバーロード

PHP マニュアルで説明されているように、__getはアクセスできないプロパティからのデータの読み取りを処理するために使用され、__set はアクセスできないプロパティへのデータの書き込みに使用されます。 $bar プロパティがプライベートまたはプロテクトとして定義されていた場合、__get メソッドと __set メソッドが介入します。

パフォーマンスへの影響

マジック メソッドは次のようなものであることに注意することが重要です。通常のゲッター、セッター、および直接メソッド呼び出しよりも大幅に遅くなります。したがって、これらは、エラー処理や動的プロパティ アクセスの提供など、特定の使用例に応じて慎重に使用する必要があります。

結論

PHP の __get および __set マジック メソッドは、次のような役割を果たします。特定の目的に使用するため、パフォーマンスのトレードオフを理解した上で、必要な場合にのみ使用する必要があります。提供されている例のように、プロパティにアクセスできる場合は、標準のプロパティ アクセスおよび変更手法を使用する方が効率的です。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3