Хотя РНР обладает общими объектно-ориентированными возможностями, он не является полноценным ОО-языком (например, таким, как C++ или Java). В частности, в РНР не поддерживаются следующие объектно-ориентированные возможности:
− множественное наследование;
− автоматический вызов конструкторов (если необходимо, чтобы при конструировании объекта производного класса вызывался конструктор базового класса, придется вызвать его явно);
− абстрактные классы;
− перегрузка методов;
− перегрузка операторов (это связано с тем, что РНР является языком со свободной типизацией, — за дополнительной информацией обращайтесь к главе 2);
− закрытый и открытый доступ, виртуальные функции;
− деструкторы;
− полиморфизм.
Но и без всего перечисленного все равно можно извлечь пользу из объектно-ориентированных возможностей, поддерживаемых РНР.