web-dev-qa-db-fra.com

Est PHP Orienté objet?

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

De même, une application PHP entièrement construite avec classes peut-elle être appelée orientée objet ?

39
avon_verma

Oui, les dernières versions de PHP sont orientées objet. Autrement dit, 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 des objets intégrés (comme les fonctionnalités de MySQL). 

Cependant, il y a encore beaucoup de fonctions en jeu, il pourrait donc y avoir un désaccord sur la façon dont PHP est orienté objet. Je pense que c'est. Et oui, CakePHP est un framework orienté objet.

38
GolezTrol

Non, PHP n'est pas totalement orienté objet. 

Et ni C++ ni Java, car ils ont tous types primitifs} _ (et PHP possède également une énorme collection de fonctions comme str_replace() et is_*(), qui sont clairement de nature procédurale). À ma connaissance, seuls le langage purement orienté objet sont Ruby et Scala (et on pourrait soutenir que ce dernier vise davantage le paradigme de la programmation fonctionnelle).

PHP est ce que l’on pourrait appeler «langage compatible avec les objets».

En ce qui concerne le code écrit en PHP, vous devez comprendre que le fait que vous utilisiez des classes ne le rend pas OOP. Surtout si votre code est principalement basé sur une classe statique. 

Donc, si vous demandez: "CakePHP est-il un framework OO?", Alors la réponse est - NO. La description la plus flatteuse serait "programmation orientée classe". La base de code est remplie de méthodes et de variables statiques, où class agit plutôt comme un espace de noms. Fondamentalement, CakePHP est un code procédural, encapsulé dans une syntaxe, qui imite en surface un code orienté objet.

91
tereško

Pour qu'une langue soit classée comme orientée objet, elle 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, il s'agit de OO, sinon ce n'est pas le cas. Ma suggestion est de rechercher comment PHP supporte, ou non, chaque principe. Les développeurs ont tendance à être trop attachés à la langue qu’ils utilisent actuellement et sont souvent mal orientés et biaisés. Prenons l'exemple de la personne qui déclare que C++ n'est pas une programmation orientée objet et qui reçoit pourtant beaucoup de félicitations! Cette personne ne pouvait pas être plus éloignée de la vérité et pourtant sa réponse semble être correcte pour beaucoup!

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

2
WhiteWabbit

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

1) classe
2) objet
3) Constructeurs et destructeurs
4) Héritage d'objet
5) Opérateur de résolution de portée (: :)

et beaucoup plus. Si vous voulez apprendre php orienté objet, référez-vous au lien de référence ci-dessous

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

2
Sandeep Shirsat

Question interessante. Mais "Non", PHP est un langage compatible avec les objets, pas orienté objet, mais CakePHP est un framework orienté objet.

2
Piyush

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

Vous trouverez également de nombreux frameworks nouveaux et avancés tels que: -

Ces frameworks ont de très bonnes fonctionnalités et sont vraiment puissants au sens vrai du terme, et certains sont également conviviaux pour les programmeurs. 

Quelques points notables: - 

  • PHP v5 ne prend toujours pas en charge l'héritage multiple.
  • PHP v5 supporte toujours les méthodes procédurales de codage, il est donc toujours compatible avec les versions antérieures de sites Web plus anciens (développés de manière procédurale à l'aide de PHP v4).

J'espère que ça aide.

0
Knowledge Craving