Ist PHP objektorientiert?


Answers

Nein, PHP ist nicht vollständig objektorientiert.

Und weder ist C ++ oder 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, von der ich weiß, sind Ruby und Scala (und man könnte argumentieren, dass letztere mehr auf das Paradigma der funktionalen Programmierung abzielt).

PHP ist das, was man "objekt-fähige Sprache" nennen könnte.

Was den in PHP geschriebenen Code anbelangt, müssen Sie verstehen, dass, gerade weil Sie Klassen verwenden, es nicht OOP ist. Vor allem, wenn Ihr Code hauptsächlich auf einer statischen Klasse basiert.

Also, wenn Sie fragen: "Ist CakePHP ein OO-Framework?", Dann lautet 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 eher wie ein Namespace wirkt. Grundsätzlich ist CakePHP ein in Syntax gewickelter Prozedurcode, der 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 auf Klassen basiert, auch als objektorientiert bezeichnet werden ?




Objektorientierte Technologie wird häufig in Bezug auf Verkapselung, Polymorphismus 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 - Anforderung zur Ausführung einer Methode

Klassenvorlage zum Erstellen von Objekten

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

Kapselung - Informationen verstecken von Objekten unterstützt

Vererbung - Mechanismus zur Wiederverwendung von Klassenspezifikationen

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" ] Definition:

  1. Alles ist einObjekt.

  2. Objekte kommunizieren durch Senden und Empfangen von Nachrichten (in Bezug auf Objekte).

  3. Objekte haben ihren eigenen Speicher (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 ist deutlich zu sehen, 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 objektiv im strengen Sinn sein, aber einige Leute betrachten es als OOP.




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




Für jede Sprache, die als objektorientiert klassifiziert werden soll, muss sie mindestens drei Prinzipien von OO befolgen: Vererbung, Polymorphismus und Kapselung. Ich kenne PHP nicht und habe es noch nie 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 tendieren dazu, übermäßig mit der Sprache verbunden zu sein, die sie gegenwärtig verwenden, und sind oft fehlgeleitet und voreingenommen. Nehmen wir zum Beispiel die Person, die behauptet, dass C ++ keine objektorientierte Programmierung ist und dennoch viele Daumen hoch empfängt! 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 herumgeguckt und es scheint, dass PHP5 diese 3 Prinzipien unterstützt!