php магические методы



Магические методы php

Автор Неважно Неважно задал вопрос в разделе Другие языки и технологии

Магические методы PHP и получил лучший ответ

Ответ от Капитан Гугл[гуру]
Это называется инкапсуляция: методы __get и __set инкапсулируют данные, хранимые в переменной. Зачем? Чтобы не надо было переписывать код! Например, был написан большой фреймворк, и начиная с какого-то момента решили, что просто присваивания переменной недостаточно, нужно добавить еще запись в БД и добавление в лог сообщения об этом. Объем замены одного действия (присваивания) на 3 по всему тексту фреймворка - дохрена и больше. А так - меняем только __set - и вуаля, всюду, где было одно действие, их стало 3, а код не изменился!
Еще пример: предположим, что у нас есть какой-то объект с кучей кешированых параметров, например, треугольник, в котором хранятся данные о длине сторон, углах, высотах, медианах и т. д. Мы меняем одну сторону - значит, все остальные данные (прилежащие углы и т. д. ) надо менять. Вручную в каждом месте это прописывать неудобно; а так - пишем присваивание, а на самом деле выполняем кучу вычислений. Можно и наоборот: держать значения высот, медиан и др. вторичных параметров undefined до первого запроса, и только потом вычислять (это называется "ленивые вычисления"). Программа, запрашивающая высоту в треугольнике, может быть уверена, что это переменная - а на самом деле это __get, обрабатывающий данные только в момент обращения.

Ответ от ? ?[гуру]
class Test {
private $property;
public function __set($key, $val) {
if (!is_scalar($val)) throw new Exception('Значение должно быть скалярным');
$this->$key = $val;
}
}
$test = new Test;
$test->property = 1; // значение будет успешно присвоено
$test->property = new Test; // будет ошибка
Это для простой реализации инкапсуляции, когда аксессоры ни к чему
---
Добавлено.
Не совсем. Это лишь пример. По некоторым концепциям, валидацией занимаются объекты валидации, а сущности данных лишь хранят в себе данные и состояние объекта.
Нужно в ООП вникнуть, чтобы понять, зачем это нужно
---
Добавлено.
private для скрытого свойства - если оно будет публичным, то __set не будет вызван. Теоретический пример может быть таким: - и из вне никак не отразится работоспособность с этим объектом
---
Добавлено.
Это все прекрасно описано на php.net в соответствующем разделе. Только стоит помнить, что они для публичных свойств не работают и их смысл быть аксессорами.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Магические методы PHP

Какова тайна Бермудского треугольника?
Чтобы ответить на этот вопрос надо рассмотреть подробное описание морфологии морского дна этого
подробнее...
спросили в Куэнка
Что такое аффирмация?
В некоторых практиках духовного совершенство¬вания используется техника аффирмаций. Человек в
подробнее...
спросили в Трава Травы
почему эту траву называют
- Священный базилик (тулси) является одной из священных трав Индии, посвященной Кришне и Вишнуподробнее...

Что такое Квантовая магия?
Разработанный комплекс С. И. Доронина техник, методик и упражнений, выведенный за 12 лет практики
подробнее...

Что такое Грейдинг в холдинге?
Грейдинг устанавливает и фиксирует ценность, которую конкретная работа добавляет организации.подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в 352 год
Где растет каменный лес и какая легенда его образования?
КИТАЙ
Каменный Лес Ши Лин.
#yaimg69601#
#yaimg69602#
Камни имеют самую разную
подробнее...
спросили в Другое
наука древнего китая
Известно, что наука в древнем Китае была очень развита. Однако, она шла совершенно иным путем, чем
подробнее...
спросили в Техника
Когда появились первые стереокартинки? Как правильно рассматривать стереограммы?
Первые пробные стереокартинки появились еще в 1836 году.Первые стереограммы представляли собой две
подробнее...

Как переводится слово Фесса
Кэр Лаэда, некромант Неясыть)
Потомственный маг Долины, сын Витара Лаэды. Родители Фесса,
подробнее...

Сколько раз в неделю нужно поливать орхидею (ФАЛЕНОПСИС)
Каждый делает это по-своему, но можно предложить несколько простых способов: по весу горшка,
подробнее...
спросили в Другое
Почему демоны бояться соли?
Благодаря своему белому цвету соль издавна ассоциируется с жизнью и здоровьем и считается
подробнее...
спросили в Другое
Что представляет собой квадрат "ло шу"?
Одним из инструментов, которые применяются в фэн-шуй, является квадрат Ло Шу.

Согласно
подробнее...
спросили в Другое
Сообщение об драгоцеенном камне аметист
Аметист, минерал, фиолетовая разновидность кварца, SiO2. Название происходит от греч. «аметистос» –
подробнее...
спросили в Nationair
Как воспитать в себе силу воли? Как стать сильным духом?
Если человек говорит: "Ничего страшного, что я нарушил режим",– первое, что он теряет – это
подробнее...
спросили в Мистика Эзотерика
в чем разница=эзотерика мистика и магия?
эзотерика-изучение Законов Вселенной, не соответствующих общепринятым человеческим законам,
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*