ホームページ  >  記事  >  バックエンド開発  >  パブリック プロパティにアクセスするときに PHP の __get および __set マジック メソッドが呼び出されないのはなぜですか?

パブリック プロパティにアクセスするときに PHP の __get および __set マジック メソッドが呼び出されないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-25 19:59:15811ブラウズ

Why are PHP's __get and __set magic methods not invoked when accessing a public property?

PHP のマジック メソッド __get および __set

PHP には、開発者がプロ​​パティ アクセスやメソッド呼び出しなどの特定の操作をオーバーロードできるマジック メソッドが用意されています。これらのメソッドの中には、プロパティ アクセスのデフォルト動作をオーバーライドするように設計された __get および __set があります。

提供されたコードは、パブリック プロパティとマジック メソッド __get および __set を備えたクラス foo を定義します。ただし、これらのメソッドを使用して $foo->bar にアクセスしようとすると、パブリック プロパティのみがアクセスされます。

これは、プロパティまたはメソッドにアクセスできない場合にのみ __get および __set が呼び出されるからです。 $foo->bar はパブリック プロパティであるため、マジック メソッドはトリガーされません。

PHP マニュアルによると、アクセスできないプロパティからデータを読み取る場合は __get が実行され、アクセスできないプロパティにデータを書き込む場合は __set が使用されます。プロパティ。この場合、クラス メンバーはパブリックであるためアクセス可能であり、マジック メソッドは無関係になります。

マジック メソッドを使用する代わりに、適切なゲッターとセッターを実装するか、より効率的で予測可能な動作を実現するためにプロパティに直接アクセスすることを検討してください。マジック メソッドは、プロパティまたはメソッドが通常の手段ではアクセスできない例外的な場合のために予約されている必要があります。

以上がパブリック プロパティにアクセスするときに PHP の __get および __set マジック メソッドが呼び出されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。