Улучшенные функции ООП в РНР4 послужили толчком к большим изменениям в сообществе программистов РНР. Разработчики лишь начинают использовать преимущества ООП. В данной главе мы рассмотрим ООП с самого основания и покажем, какую роль оно играет в РНР и как строить элегантные решения задач, часто возникающих в веб-среде. Мы рассмотрим некоторые полезные эвристики и приемы для улучшения повторного использования и сопровождения кода, а также некоторые искусные проектные решения. Не забегая вперед, посмотрим сначала, как возникла парадигма ООП и в чем состоят его отличия от традиционного функционального программирования. Если вы хорошо знакомы с ООП и вам нужна конкретная информация, относящаяся к РНР, можете сразу перейти к разделу «Классы».
Объектно-ориентированное программирование
Начнем с рассмотрения отличий ООП от обычного функционального программирования. До появления ООП сложность и размеры компьютерных программ неуклонно росли. Для разработки ПО требовалось привлекать много архитекторов и инженеров, все больше времени и денег уходило на сопровождение программ. Часто, когда требовалось добавить или изменить характеристики или правила, чтобы привести их в соответствие с бизнес-моделью, модификация занимала недели или даже месяцы. Гораздо быстрее было бы создать новое приложение.
Приложения стали такими большими, что поиск ошибок превратился в серьезную проблему. Прослеживание работы имеющихся функций занимало больше времени, чем внесение модификаций, а код становился крайне беспорядочным по мере увеличения количества программистов, участвующих в проекте. Одним из основных факторов стало недостаточное начальное проектирование, часто связанное с языками, не поддерживающими ООП, такими как С или Fortran. Крупные компании, вкладывающие массу времени и средств в создание компьютеризованных систем для управления своим бизнесом, остро ощущали необходимость усовершенствования технологий проектирования и создания программного обеспечения.
В это время специалисты по вычислительной технике, философы, биологи и разработчики структур ПО, в числе которых отличились Алан Кэй (Alan Kay) со своими проектами внедрения Smalltalk и Буч (Grady Booch),
создавший современные принципы ООП, разработали базовые структуры для создания программного обеспечения с помощью совершенно нового метода, получившего в итоге название объектно-ориентированного программирования.
Задача была в том, чтобы разрешить кризис в разработке ПО посредством простой в использовании и интуитивной структуры (framework). Пионеры ООП обнаружили, что с помощью нескольких эвристик, приложенных к этой новой технологии, становится возможным автоматическое решение массы проблем, связанных с кризисом программного обеспечения, без существенных дополнительных усилий программистов. ООП вынуждает программиста взглянуть на задачи и их решения с другой точки зрения. При этом незначительно снижается производительность, зато существенно облегчается сопровождение кода.