Прочитав другие советы, я склонен сказать, что:
Как правило GENERIC , вы не всегда будете определять сеттеры для ALL свойств,специально "внутренние" (семафоры, внутренние флаги ...). Свойства только для чтения не будут иметь сеттеров, очевидно, поэтому некоторые свойства будут иметь только геттеры;вот где __get () сокращает код:
- определяет __get () (магические глобальные геттеры) для всех одинаковых свойств,
- группирует их в массивы так:
- они будут иметь общие характеристики: денежные значения будут / могут подходить надлежащим образом отформатированы, даты в определенном формате (ISO, США, международный) и т. Д.
- сам код может проверитьчто только существующие и разрешенные свойства читаются с использованием этого магического метода.
- всякий раз, когда вам нужно создать новое подобное свойство, просто объявите его и добавьте его имя в соответствующий массив, и все готово.Таким образом, БЫСТРО , чем определение нового метода получения, возможно, с некоторыми строками кода, ПОВТОРЯЕМЫМИ снова и снова по всему коду класса.
Да!мы могли бы написать частный метод, чтобы сделать это, но, опять же, мы будем иметь МНОГИЕ объявленные методы (++ memory), которые в конечном итоге вызовут другой, всегда один и тот же метод.Почему бы просто не написать SINGLE метод для правила их всех ...?[Ага!каламбур абсолютно предназначен!:)]
Магические сеттеры также могут реагировать ТОЛЬКО на определенные свойства, поэтому все свойства типа даты могут быть экранированы по недопустимым значениям только в одном методе.Если свойства типа даты были перечислены в массиве, их установщики могут быть легко определены.Просто пример, конечно.Есть слишком много ситуаций.
О удобочитаемость ... Ну ... Это еще один спор: я не люблю быть связанным с использованием IDE (на самом деле,Я ими не пользуюсь, они, как правило, говорят мне (и заставляют меня), как писать ... и мне нравится писать "красота").Я склонен быть последовательным в отношении именования, поэтому мне достаточно использования ctags и пары других вспомогательных средств ... В любом случае: как только все эти магические сеттеры и геттеры завершены, я пишу другие сеттеры, которые слишком специфичны или «особенные» длябыть обобщенным в методе __set ().И это охватывает все, что мне нужно для получения и установки свойств.Конечно: не всегда есть общий язык, или есть несколько таких свойств, которые не стоят проблем при кодировании магического метода, и все же есть старая, хорошая традиционная пара сеттер / геттер.
Языки программированияэто просто: человеческие искусственные языки.Итак, у каждого из них есть своя собственная интонация или акцент, синтаксис и вкус, поэтому я не буду притворяться, что пишу код на Ruby или Python, используя тот же «акцент», что и Java или C #, и я не написал бы JavaScript или PHP, чтобы они напоминалиPerl или SQL ... Используйте их так, как они предназначены.