Сегодня я прочитал Учебник по 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 для атрибута. Чтобы внести это изменение, вам нужно добавить сеттер и провести свой атрибут в секрете. Результат: это поможет вам повлиять на это изменение для всех клиентов этого класса.
Если бы вы использовали сеттеры и геттеры с самого начала, обслуживание было бы намного проще.
Других решений пока нет …