2010-06-07 2 views
-6

Je sais que PHP 5 a des similarités orientées objet mais ce n'est pas un vrai environnement OOP? Aussi a-t-il un vrai compilateur? Je vois la compilation de scripts qui signifie encore procédural. Je suppose que ce n'est pas un vrai compilateur en ce sens que les compilateurs PHP ne créent pas d'assemblages?PHP est toujours une procédure globale?

+1

Pour quiconque a voté pour fermer comme "subjectif et argumentatif": La question elle-même n'est pas, juste @coffeeaddict est. :) – deceze

+3

Je viens de voter pour fermer comme "subjectif et argumentatif". Soit @coffeeaddict n'a absolument aucune idée de ce qui rend un langage orienté objet (pour lui, orienté objet est un langage qui compile dans l'assemblage et est fortement typé) ou simplement commencé cette question pour un argument. ** La programmation orientée objet (POO) est un paradigme de programmation qui utilise des «objets» - des structures de données composées de champs de données et de méthodes avec leurs interactions - pour concevoir des applications et des programmes informatiques. Et PHP supporte cela. –

+1

Je suis avec @Andrew ici. Malgré mon premier commentaire, j'ai voté pour fermer pour la même raison; c'est la seule chose à faire puisque les commentaires ne peuvent malheureusement pas être rabaissés. – deceze

Répondre

1

Questions similaires discutées beaucoup de fois. Il n'y a pas de POO "vraie" ou "fausse". En raison de php supporte l'encapsulation, le polymorphisme, l'héritage - c'est le langage de programmation orienté objet. Et il n'y a pas encore de "vrais" compilateurs. Mais vous pouvez regarder Facebook's Hip-Hop

6

PHP est maintenant un langage complètement orienté objet, même si la plupart des API ne le sont pas.

  • Il prend en charge la classe et les objets.
  • Il suit les principes de la POO (héritage, Encapsulation, Abstraction, Polymorphism)

Il est donc un langage objet complètement orienté.


PHP ne fait compiler (par défaut sur chaque course à moins d'utiliser un « accélérateur ») ses scripts en byte-code intermédiaire qui est ensuite exécution par le moteur Zend.

Il est en fait assez près d'autres langues:

  • VB.NET/C#/F #/autres langages .NET
    Ces langues lors de la compilation ne fonctionne pas binaires sortie en code assembleur, mais plutôt binaires en langage intermédiaire commun (CIL). Le bytecode CIL est ensuite interprété lors de l'exécution par la machine virtuelle .NET.

  • Java
    Java compile .class et .jar fichiers qui ne sont pas dans le code assembleur, mais plutôt en bytecode Java. Bytecode Java est ensuite interprété à l'exécution par la machine virtuelle Java

  • PHP
    PHP Zend compile en bytecode, qui est ensuite interprété lors de l'exécution par le moteur Zend.

7

Je pense que vous devriez lire un peu sur la définition des mots que vous utilisez! "Assemblies" est un mot que .NET utilise pour quelque chose qui est traduit de manière approximative comme "une DLL plus quelques éléments de support que vous pouvez déployer". Peut-être que vous pensiez à "code de montage"?

Les compilateurs sont compilés pour toutes sortes de représentations. Les bytecodes JVM, les bytecodes CLR, le bytecode x86, le bytecode Python, le bytecode MIPS, le bytecode ARM, ... Ce sont toutes des cibles valides pour un compilateur. Notez que, pour le bytecode JVM et x86, il existe à la fois des environnements d'exécution hardware (CPU) et software (interpréteur), donc si le code cible est "hardware" ou non, il ne joue pas vraiment dedans.

La compilation de code par rapport à l'interprétation de code ne signifie rien quand il s'agit de OO vs procédural vs fonctionnelle.OO concerne le polymorphisme de support, le masquage des données, les implémentations de data-goes-with-interface et la composabilité. PHP supporte toutes ces choses, donc vous pouvez l'utiliser pour implémenter un design OO de façon directe, donc je dirais que PHP supporte OO.

Enfin, vous devriez regarder le compilateur PHP de Facebook, qui compile PHP en C puis C en x86, ce qui lui donne apparemment une accélération de 50% par rapport à l'environnement d'exécution PHP traditionnel.

+0

Les assemblages nécessitent un code d'assemblage, même chose. – PositiveGuy

+0

Oui, je demande à propos de la POO. Polymorphisme et tout le reste. Je sais ce que la POO implique et les avantages et l'utilisation de celle-ci. – PositiveGuy

+5

@coffeeaddict: En fait, les assemblages .NET ne sont PAS compilés dans Assembly. Ils sont compilés dans le bytecode CIL qui est ensuite interprété par la machine virtuelle .NET. Pour vous citer, ils ne "nécessitent pas de code d'assemblage". En fait, il n'y a aucun code de montage impliqué. –

Questions connexes