Ist PHP objektorientiert?


Answers

Nein, PHP ist keine vollständig objektorientierte Sprache.

Und weder C ++ noch Java, weil sie alle primitive Typen haben (und PHP hat auch eine riesige Sammlung von Funktionen wie str_replace() und is_*() , die eindeutig prozedural sind). Nur die reine objektorientierte Sprache, die ich kenne, ist Ruby und Scala (und man könnte argumentieren, dass letzteres mehr auf das funktionale Programmierparadigma abzielt).

PHP ist, was man als "objektfähige Sprache" bezeichnen könnte.

Was den in PHP geschriebenen Code angeht, müssen Sie verstehen, dass es, nur weil Sie Klassen verwenden, es nicht zu OOP macht. Vor allem, wenn Ihr Code hauptsächlich auf statischen Klassen basiert.

Also, wenn Sie fragen: "Ist CakePHP ein OO-Framework?", Dann ist die Antwort - NEIN . Die schmeichelhafteste Beschreibung dafür wäre "klassenorientierte Programmierung" . Die Codebasis ist mit statischen Methoden und Variablen gefüllt, wobei die Klasse mehr wie ein Namensraum agiert. Grundsätzlich ist CakePHP ein prozeduraler Code, der in eine Syntax eingebettet ist, die auf der Oberfläche objektorientierten Code nachahmt.

Question

Ist PHP eine objektorientierte Sprache? Wenn nicht, was ist dann mit dem Framework CakePHP? Ist es eine objektorientierte MVC-Implementierung von PHP?

Kann eine PHP-Anwendung, die vollständig aus Klassen besteht , auch objektorientiert genannt werden ?




PHP ist objektorientiert. CakePHP ist ein objektorientiertes MVC-Framework. Eine mit Klassen erstellte PHP-Anwendung kann als objektorientiert bezeichnet werden.




Objektorientierte Technologie wird oft in Bezug auf Verkapselung, Polymorphie und Vererbung beschrieben . Aber das sind nur Identität. Wenn die objektorientierte Technologie erfolgreich sein soll, muss sie sich auf das Objekt konzentrieren.

Objekte - Paket mit Daten und Prozeduren

Methoden - Service liefern

Nachricht - Anfrage zum Ausführen einer Methode

Klasse - Vorlage zum Erstellen von Objekten

Instanz - ein Objekt, das zu einer Klasse gehört

Einkapselung - Informationen, die von Objekten unterstützt werden

Vererbung - Mechanismus, der die Wiederverwendung von Klassenspezifikationen ermöglicht

Klassenhierarchie - Baumstruktur, die Vererbungsbeziehungen darstellt

Polymorphismus - um verschiedene Implementierungen hinter einer gemeinsamen Schnittstelle zu verstecken

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

  1. AllesIsAnObjekt.

  2. Objekte kommunizieren durch Senden und Empfangen von Nachrichten (in Form von Objekten).

  3. Objekte haben ihr eigenes Gedächtnis (in Bezug auf Objekte).

  4. Jedes Objekt ist eine Instanz einer Klasse (die ein Objekt sein muss).

  5. Die Klasse enthält das gemeinsame Verhalten für ihre Instanzen (in Form von Objekten in einer Programmliste).

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.

Nun klar ersichtlich, dass Java, C ++ und PHP gegen Regel 1 verstoßen? Warum bcoz int, float etc. (there are a total of eight primitive types). Es kann also nicht im strengen Sinne Objektorientiert sein, aber einige Leute betrachten es als OOP.




Damit jede Sprache als objektorientiert klassifiziert werden kann, muss sie mindestens 3 Prinzipien von OO einhalten: Vererbung, Polymorphie und Verkapselung. Ich kenne PHP nicht und ich habe es nie zuvor benutzt, aber wenn es zumindest diese 3 Prinzipien erfüllt, dann ist es OO, sonst ist es das nicht. Mein Vorschlag ist zu suchen, wie PHP jedes Prinzip unterstützt oder nicht. Entwickler neigen dazu, zu sehr an der Sprache, die sie derzeit verwenden, gebunden zu sein und sind oft fehlgeleitet und voreingenommen. Nehmen Sie zum Beispiel die Person, die besagt, dass C ++ keine Objektorientierung ist und trotzdem viele Daumen hoch bekommt! Diese Person könnte nicht weiter von der Wahrheit entfernt sein, doch scheint seine Antwort für viele richtig zu sein!

Also habe ich ein bisschen herum gegraben und es scheint, dass PHP5 diese 3 Prinzipien unterstützt!




Links