Перегрузка геттеров и сеттеров: понимание магических методов __get и __set
Магические методы __get и __set в PHP предназначены для предоставления альтернативы традиционные геттеры и сеттеры. Переопределяя эти методы, разработчики могут настроить поведение доступа и изменения свойств. Однако, как видно из приведенного примера кода, эти методы не вызываются должным образом.
Проблема: магические методы и общедоступные свойства
Когда свойства объявлены общедоступные, они считаются доступными, и PHP не вызывает методы __get и __set. В этом конкретном случае свойство $bar объявлено общедоступным, что делает магические методы излишними.
Перегрузка свойств с помощью магических методов
Как упоминалось в руководстве по PHP, __get используется для обработки чтения данных из недоступных свойств, а __set используется для записи данных в недоступные свойства. Если бы свойство $bar было определено как частное или защищенное, вмешались бы методы __get и __set.
Последствия для производительности
Важно отметить, что магические методы значительно медленнее, чем обычные геттеры, сеттеры и прямые вызовы методов. Поэтому их следует использовать разумно для конкретных случаев использования, таких как обработка ошибок или обеспечение динамического доступа к свойствам.
Заключение
Магические методы __get и __set в PHP служат конкретной цели и должен использоваться только при необходимости, понимая связанные с этим компромиссы в производительности. В случаях, когда свойства доступны, как в приведенном примере, более эффективно использовать стандартные методы доступа и изменения свойств.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3