В чем смысл __get () & amp; __set () методы

Сегодня я прочитал Учебник по MVC, парень использовал магические методы (__get & __set ()) для доступа к закрытому значению члена. (ССЫЛКА НА САЙТ)
Сначала я был озадачен тем, что делают __get и __set, но после прочтения проблем с Интернетом я наконец-то узнал, что эти методы вызываются, если член не доступен извне.
До сих пор…

Но не имеет смысла иметь такой код:

класс Foo {
частный бар $;

public __set ($ value) {
$ this-> bar = $ value;
}

public __get () {
вернуть $ this-> bar;
}
}

Я могу использовать нормальный метод получения и установки, я думаю — его IMO гораздо проще понять:

класс Foo {
частный бар $;

public setBar ($ value) {
$ this-> bar = $ value;
}

public getBar () {
вернуть $ this-> bar;
}
}

Если вы хотите получить доступ к члену снаружи с помощью __get & __set вы также можете сделать участника публичным — так что я не понимаю, в чем смысл этого.
Можете ли вы сказать мне (может быть, с примером), в чем смысл этих 2 методов?

0

Решение

Вы разрабатываете свою программу и считаете, что вам не нужно контролировать доступ к своим атрибутам. Поэтому вы ставите публичное вместо частного. Но во время обслуживания вы понимаете, что вам нужно изменить свой класс, чтобы наложить ограничение так, чтобы ему было запрещено 0 для атрибута. Чтобы внести это изменение, вам нужно добавить сеттер и провести свой атрибут в секрете. Результат: это поможет вам повлиять на это изменение для всех клиентов этого класса.

Если бы вы использовали сеттеры и геттеры с самого начала, обслуживание было бы намного проще.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]