При определении класса PHP, что является предпочтительным / наилучшей практикой? Есть ли какие-то ключевые различия, которые я упускаю из виду?
Кажется, что было бы проще, лаконичнее и удобнее написать магический метод __set()
и поместить в него конструкцию switch()
с кейсами для всех закрытых членов, к которым я хочу разрешить доступ. Он не будет вызываться автоматически изнутри класса, но, опять же, не будет setFoo()
, поэтому, если я хочу использовать аксессор / мутатор внутри, мне придется явно вызывать метод в любом случае.
Другое отличие состоит в том, что в коде вне класса я всегда мог получить доступ к переменным-членам таким же образом, как и $obj->foo
, будь то public (напрямую) или private (используя __set()
), вместо использования многих отдельных методов.
Я полагаю, это сводится в основном к эстетическому выбору. Например, если у меня есть адресные данные о покупке, я не хочу иметь 16 или более отдельных методов доступа только для имени, фамилии, адреса1, адреса2, города, штата и т. Д. Каждый для данных доставки и выставления счетов.
Есть ли какие-то ключевые различия, которые я упустил из виду? (Может ли сложная среда IDE отказаться от автозаполнения имени члена вне класса, поскольку оно помечено как личное?) Я в значительной степени ответил на свой оригинальный вопрос? Заранее спасибо за ваш вклад.