PHP には、開発者がプロパティ アクセスやメソッド呼び出しなどの特定の操作をオーバーロードできるマジック メソッドが用意されています。これらのメソッドの中には、プロパティ アクセスのデフォルト動作をオーバーライドするように設計された __get および __set があります。
提供されたコードは、パブリック プロパティとマジック メソッド __get および __set を備えたクラス foo を定義します。ただし、これらのメソッドを使用して $foo->bar にアクセスしようとすると、パブリック プロパティのみがアクセスされます。
これは、プロパティまたはメソッドにアクセスできない場合にのみ __get および __set が呼び出されるからです。 $foo->bar はパブリック プロパティであるため、マジック メソッドはトリガーされません。
PHP マニュアルによると、アクセスできないプロパティからデータを読み取る場合は __get が実行され、アクセスできないプロパティにデータを書き込む場合は __set が使用されます。プロパティ。この場合、クラス メンバーはパブリックであるためアクセス可能であり、マジック メソッドは無関係になります。
マジック メソッドを使用する代わりに、適切なゲッターとセッターを実装するか、より効率的で予測可能な動作を実現するためにプロパティに直接アクセスすることを検討してください。マジック メソッドは、プロパティまたはメソッドが通常の手段ではアクセスできない例外的な場合のために予約されている必要があります。
以上がパブリック プロパティにアクセスするときに PHP の __get および __set マジック メソッドが呼び出されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。