重載Getter 和Setter:了解__get 和__set 魔術方法
PHP 中的__get 和__set 魔術方法旨在提供替代方法傳統的getter 和setter。透過重寫這些方法,開發人員可以自訂屬性存取和修改的行為。然而,如提供的程式碼範例中所示,這些方法沒有按預期被呼叫。
問題:魔術方法與公共屬性
聲明屬性時public,它們被認為是可訪問的,並且 PHP 不會調用 __get 和 __set 方法。在這個特定實例中, $bar 屬性被宣告為公共,使得魔術方法變得多餘。
使用魔術方法重載屬性
正如PHP 手冊中提到的, __get用於處理從不可訪問的屬性讀取數據,而__set 用於將資料寫入不可存取的屬性。如果 $bar 屬性被定義為私有或受保護,則 __get 和 __set 方法將會介入。
效能影響
需要注意的是,魔術方法比常規 getter、setter 和直接方法呼叫慢得多。因此,應明智地針對特定用例使用它們,例如錯誤處理或提供動態屬性存取。
結論
PHP 中的 __get 和 __set 魔術方法有特定目的,並且僅應在必要時使用,並了解所涉及的性能權衡。在屬性可存取的情況下(如提供的範例所示),使用標準屬性存取和修改技術會更有效。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3