Вижу тут есть неоднозначное толкование целей ООП, посему, позвольте немного растолковать "mission & vision"
---
ООП (объектно ориентированное программирование) нужно вовсе не для того, чтоб обеспечить совместимость, расширяемость, или что-то еще... Это просто один из стилей программирования. Почти любую задачу можно решить как процедурным способом, так и Объектным.
Процедурный метод легче для понимания и именно с него начинают все новички, когда делают свои первые шаги в программировании.
Потому, среди них бытуер распространенная ошибка, мол Процедурный метод - это фигня для начинающих, а ООП - это круто.
Но это не так, возьмите к примеру один из самых распространенных скриптов phpMyAdmin, он написан именно процедурным методом.
Добавлено через 03:50 сек.
Далее, про ООП...
Многие "продвинутые новички" и даже некоторые опытные кодеры, часто вдаряются в другую крайность, начинают пихать ООП везде, даже туда, где это не нужно.
Я видал даже такой маразм, когда для замера времени генерации страницы, писался отдельный класс, хотя эту задачу можно было решить парой строчек кода.
---
Если Вы используете какой-либо фреймворк, например CodeIgniter, или Kohana, там конечно вы вынуждены будете писать все в ООП, ибо иначе не прокатит.
Но когда пишете СВОЙ скрипт, там уместно сочетать оба метода и применять ООП там, где это действительно необходимо и удобно.
Добавлено через 07:18 сек.
Простой пример:
Для чего я перевел ядро двига на ООП?
Да потому, что все важнейшие функции по системным настройкам, авторизации юзеров и безопасности, спрятаны внутри Класса, их невозможно вызвать ни напрямую, ни из каких-либо модулей. Это значительно повышает безопасность и удобство, тот, кто пишет доп. модули, или изменяет под себя двиг, получает готовые системные переменные, не мучаясь над тем, откуда они взялись и не ковыряя ядро.