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?

Aussi, une application PHP entièrement construite en utilisant classes peut-elle être appelée orientée objet?

39
demandé sur Archy Wilhes 魏何 2011-01-15 15:14:57

8 réponses

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, la fonctionnalité intégrée est également intégrée dans les objets (comme les fonctionnalités MySQL).

Il y a encore beaucoup de fonctions lâches, donc il pourrait y avoir un désaccord sur la façon dont PHP orienté objet est. Je pense qu'il est. Et oui CakePHP est un framework orienté objet.

38
répondu GolezTrol 2011-01-15 12:19:41

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

Et ni C++ Ni Java, car ils ont tous types primitifs (et PHP a aussi une énorme collection de fonctions comme str_replace() et is_*(), qui sont clairement de nature procédurale). Seul le langage orienté objet pur, que je connais, est 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, "capable d'objets langue".

En ce qui concerne le code écrit en PHP, vous devez comprendre que juste parce que vous utilisez des classes, cela ne le rend pas POO. 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 - NON. La description la plus flatteuse serait "programmation orientée classe". La base de code est remplie de méthodes et de variables statiques, où la classe agit plus comme un espace de noms. Fondamentalement CakePHP est un code procédural, enveloppé dans la syntaxe, qui en surface imite le code orienté objet.

90
répondu tereško 2017-11-23 18:26:47

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 le php orienté objet, reportez-vous au lien de référence ci-dessous

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

2
répondu Sandeep Shirsat 2013-01-01 19:18:45

Pour qu'un langage soit classé comme orienté objet, il doit adhérer à au moins 3 principes de OO: héritage, polymorphisme et Encapsulation. Je ne connais pas PHP et je ne l'ai jamais utilisé auparavant mais s'il répond au moins à ces 3 principes alors c'est 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. Prenez par exemple la personne déclarant que C++ n'est pas une programmation orientée objet et recevant encore beaucoup de pouces vers le haut! Cette personne ne pouvait pas être plus éloignée de la vérité mais sa réponse semble être correcte pour beaucoup!

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

2
répondu WhiteWabbit 2013-08-19 01:04:29

Question Intéressante. Mais "Pas De", PHP est un langage capable D'objets non orienté objet, Oui mais CakePHP est un Framework orienté objet.

2
répondu Piyush 2015-06-08 19:16:39

La technologie orientée objet est souvent décrite dans termes de encapsulation, polymorphisme et héritage . Mais ce ne sont que de l'identité. Si la technologie orientée objet doit être réussie il doit l'accent sur l'objet.

Objets -- paquet contenant des données et des procédures de

Méthodes -- Fournir le service

Message -- demande d'exécution d'une méthode

De Catégorie -- modèle pour la création de objets

Exemple -- un objet qui appartient à une classe

Encapsulation -- masquage d'informations pris en charge par les objets

L'Héritage -- mécanisme permettant la réutilisation de classe spécifications

Hiérarchie des classes -- arborescence représentant les relations d'héritage

Polymorphisme -- pour masquer les différentes implémentations derrière une interface commune

[Alan Kays][4]["Considered by some to be the father of object-oriented programming"] Defination:

  1. EverythingIsAnObject.

  2. Les objets communiquent en envoyant et en recevant des messages (en termes d'objets).

  3. Les Objets ont leur propre mémoire (en termes d'objets).

  4. Chaque objet est une instance d'une classe (qui doit être un objet).

  5. La classe contient le comportement partagé pour ses instances (sous la forme d'objets dans une liste de programmes)

An object is defined by a triple (OID, type constructor, state) where OID is the unique object identifier, type constructor is its type (such as atom, tuple, set, list, array, bag, etc.) and state is its actual value.

Maintenant, clairement, il peut être vu Java, C++ et PHP viole la règle 1?Pourquoi bcoz int, float etc. (there are a total of eight primitive types). il ne peut donc pas être orienté objet au sens strict, mais certains le considèrent comme POO.

2
répondu Linus 2016-01-27 08:38:58

Vous trouverez toutes les dernières fonctionnalités de POO en 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 comme les suivants: -

Ces frameworks ont d'excellentes fonctionnalités et sont vraiment puissants en true sens, et certains sont également programmeur convivial.

Quelques points notables: -

  • PHP v5 ne supporte toujours pas L'héritage Multiple.
  • PHP V5 supporte toujours le codage procédural, donc il est toujours rétrocompatible pour les sites Web plus anciens (qui avaient été développés de manière procédurale en utilisant PHP v4).

J'espère que ça aide.

0
répondu Knowledge Craving 2011-01-15 12:30:36

PHP est orienté objet. CakePHP est un framework MVC orienté objet. Une application PHP construite en utilisant des classes peut être appelée orientée objet.

-1
répondu Stefan H Singer 2011-01-15 12:17:28