ООП не заканчивается организацией вашего кода в классы (так как структурированное программирование не заканчивается разделением кода на функции). PHP является языком сценариев, поэтому при использовании его в качестве языка ООП мы должны сами настроить ограничения.
Мне очень повезло, когда я впервые встретился с ООП, языком был Java, а книгой был Брюс Эксель - Мышление на Java (его можно купить в Amazon или других магазинах, также можно бесплатно скачать предыдущие выпуски здесь) : http://www.mindviewinc.com/Books/downloads.html). Я могу порекомендовать эту книгу даже для программистов на PHP. Если вы не начинающий, вы все поймете и примете его в PHP. Я пытаюсь программировать на PHP, как если бы это была Java (по крайней мере, часть ООП; в Java нет таких крутых ассоциативных массивов, как в PHP).
Кроме того, частные, защищенные и публичные категории не слишком точны. Public следует разделить на «метод API» и «можно вызывать из других классов» (см. «Дружественный»), защищенный должен различать «должен быть перезаписан» и «должен быть реализован».
Выучи ООП, оно того стоит.
Есть еще одна вещь, которую я хотел бы сказать, базовый шаблон ООП: используйте геттеры / сеттеры, не используйте публичные свойства, если вы используете публичные свойства, вы просто бросаете их, чтобы качать. Скажем, есть флаг состояния, теперь у него есть 2 возможных значения состояния, но если вы хотите расширить его, необходимо пересмотреть весь код, который его использует. Используйте setState () и getState (), первые функции которых просты ( $ this-> state = $ param; и return $ this-> state ), но не будет проблема с расширением значения состояния, тогда вам следует переписать только эти методы, даже в том случае, если состояние является производным значением (например, его значение вычисляется из большего количества флагов).
В ООП существует несколько менее или более глубоких похожих тем, этот метод получения / установки, вероятно, является наиболее важным из основных.
Итак, мои советы:
- используй ООП, это твой друг;
- использовать PHP как JAVA (строгий язык ООП), а не как в FORTRAN.