Блог веб-разработчика: в помощь программистам

Разница в ООП между PHP4 и PHP5

Объекты в PHP5 очень сильно отличаются от объектов в PHP4. В PHP5 ООП стал действительно более совершенным. ООП был представлен ещё в 3й версии PHP но это тяжело было назвать настоящим объектно ориентированным программированием. В PHP4 вы можете создавать объекты, но вы не можете почувствовать все прелести объектов. В PHP4 объектная модель была на примитивном уровне.
Одним из основных отличий ООП между 4й и 5й версиями PHP это то что в PHP4 – всё открыто(свойства, методы); нет никаких ограничений на использование методов и свойств. Методы доступа public, private и protected для методов появились только в 5й версии PHP. В PHP4 разработчики обычно объявляли private методы двойным подчёркиванием(__cal()). Но это не означает что объявление метода таким образом защищало его от доступа извне класса. Это всего лишь соблюдение правил.

В PHP4 вы можете встретить такие значения как interfaces но не ключевые слова как abstract или final. Интерфейс это кусок кода который любой объект может приводить в дейтсвие а это значит что объект может получить доступ ко всем методам объявленным в интерфейсе.

В интерфейсе вы можете только объявить имена и типы доступов к любому методу. В абстрактном классе различные объекты также могут иметь одинаковые методы.
Тогда любой объект может расширять абстрактный класс и изменять все методы объявленные в абстрактном классе. Финальный класс(final class) это объект который вы не можете изменять.
В PHP5 вы можете использовать всё вышеописанное.
В PHP4 нет возможности группового наследования для интерфейсов. В PHP5 групповое наследование реализуется благодаря объединению групповых интерфейсов вместе.
В PHP4, почти всё является статичным (static). Это значит если вы объявили какой-либо метод в классе, то вы можете вызывать его напрямую без создания его экземпляра класса. Для примера давайте рассмотрим часть кода написанного для PHP4:

< ? class Abc { var $ab; function abc() { $this->ab = 7;
}
function echosomething()
{
echo $this->ab;
}
}
echo abc::echosomething();
?>

В любом случае этот код будет неправильным для PHP5 так как метод echosomething() использует ключевое слово $this которое недоступно для static вызовов.

В PHP4 нет констант для классов. Нет свойства static в объектах, а так же нет деструктора.
Когда объект копируется,создается поверхностная копия объекта. Но в PHP5 поверхностное копирование возможно благодаря ключевому слову clone.
В PHP4 нет обработки исключительных ситуаций. А в PHP5 обработчик исключительных ситуаций является незаменимой возможностью.
В PHP4 есть кое-какие возможности по исследованию методов и свойств в классах, но в PHP5 помимо этих функций есть мощный API который предназначен для этих целей.
Перегрузка методов посредством __get() и __set() доступна только в PHP5. Так же в PHP5 очень много встроенных объектов, созданных для того что бы сделать вашу жизнь проще.

Но больше всего радует огромное количество улучшений ООП в PHP5.

You can follow any responses to this entry through the RSS 2.0 feed.