31 votes

PHP est-il orienté objet ?

PHP est-il un langage orienté objet ? Si non, qu'en est-il du framework CakePHP ? S'agit-il d'une implémentation MVC orientée objet de PHP ?

De même, une application PHP peut-elle être entièrement construite à l'aide de classes s'appelle orienté objet ?

76voto

tereško Points 32847

Non, PHP n'est pas un langage entièrement orienté objet.

Et pas plus que C++ ou Java, parce qu'ils ont tous types primitifs (et PHP dispose également d'une énorme collection de fonctions telles que str_replace() y is_*() qui sont clairement de nature procédurale). Les seuls langages purement orientés objet, que je connaisse, sont Ruby et Scala (et on pourrait dire que ce dernier vise davantage le paradigme de la programmation fonctionnelle).

PHP est, ce que l'on pourrait appeler, un "langage à objets".

En ce qui concerne le code écrit en PHP, vous devez comprendre que ce n'est pas parce que vous utilisez des classes que cela le rend OOP. Surtout si votre code est principalement basé sur des classes statiques.

Donc, si vous demandez : "CakePHP est-il un framework OO ?", alors la réponse est - NO . La description la plus flatteuse serait la suivante "programmation orientée vers la classe" . Le code de base est rempli de méthodes et de variables statiques, où la classe agit plus comme un espace de nom. Fondamentalement, CakePHP est un code procédural, enveloppé dans une syntaxe, qui, en surface, imite le code orienté objet.

28voto

GolezTrol Points 54531

Oui, les dernières versions de PHP sont orientées objet. C'est-à-dire que vous pouvez écrire des classes vous-même, utiliser l'héritage et, le cas échéant, les fonctionnalités intégrées sont également intégrées dans des objets (comme les fonctionnalités de MySQL).

Il y a encore beaucoup de fonctions libres cependant, donc il peut y avoir un désaccord sur le fait que PHP soit orienté objet. Je pense qu'il l'est. Et oui, CakePHP est un framework orienté objet.

4voto

Sandeep Points 107

PHP n'est pas entièrement orienté objet mais il supporte certaines fonctionnalités comme

1) classe
2) l'objet
3) Constructeurs et destructeurs
4) Héritage des objets
5) Opérateur de résolution du champ d'application (: :)

et bien d'autres encore. Si vous voulez apprendre le php orienté objet, consultez le lien de référence ci-dessous.

1) http://php.net/manual/en/language.oop5.php

1voto

WhiteWabbit Points 32

Pour qu'un langage soit classé comme orienté objet, il doit adhérer à au moins trois principes d'OO : l'héritage, le polymorphisme et l'encapsulation. Je ne connais pas PHP et je ne l'ai jamais utilisé auparavant, mais s'il respecte au moins ces 3 principes, alors il est OO, sinon il ne l'est pas. Ma suggestion est de rechercher comment PHP supporte, ou non, chaque principe. Les développeurs ont tendance à être trop attachés au langage qu'ils utilisent actuellement et sont souvent mal inspirés et partiaux. Prenez par exemple la personne qui déclare que le C++ n'est pas un langage orienté objet et qui reçoit pourtant de nombreuses félicitations ! Cette personne ne pourrait pas être plus éloignée de la vérité, mais sa réponse semble correcte pour beaucoup !

J'ai donc creusé un peu et il semble que PHP5 supporte ces 3 principes !

0voto

Knowledge Craving Points 4681

Vous trouverez toutes les dernières fonctionnalités de la POO dans PHP à partir de la version 5. Avant PHP v5, il y avait PHP v4, qui n'était pas complètement orienté objet.

Vous trouverez également de nombreux cadres nouveaux et avancés, comme les suivants:-

Ces frameworks présentent des caractéristiques intéressantes et sont réellement puissants, et certains sont également conviviaux pour les programmeurs.

Quelques points notables:-

  • PHP v5 ne supporte toujours pas l'héritage multiple.
  • PHP v5 supporte toujours la méthode de codage procédurale, et reste donc rétrocompatible avec les sites Web plus anciens (qui ont été développés de manière procédurale avec PHP v4).

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X