einfache Erklärung PHP OOP vs Procedural?

106

Ich möchte PHP lernen und möchte eine Idee über OOP und Prozedur bekommen. Ich habe einige andere Blogs und Tutorials über OOP vs Procedural gelesen, kann den Ansatz aber immer noch nicht verstehen.

OOP vs Procedural

  1. Was soll ich lernen?
  2. Was ist der Unterschied im Code? Was sind die Auswirkungen?
  3. Wie kann ein PHP-Framework im OOP-Ansatz helfen? (Ich möchte CodeIgniter lernen)
  4. Benötigt das Verfahren einen Rahmen?

Ich möchte wirklich den Codeunterschied der beiden kennen. Mein Verständnis von OOP ist, dass Sie eine Klasse wie erstellen und darauf zugreifen können. (Ich weiß nicht, ob das richtig ist).

Vielen Dank!

Pennf0lio
quelle

Antworten:

279

Hintergrund: Sie haben um eine "einfache Erklärung" gebeten, die Folgendes vorschlägt:

  1. Sie möchten eine sachliche Übersicht ohne Fachsprache
  2. Sie möchten etwas, das Ihnen hilft, von Anfang an zu lernen
  3. Sie haben festgestellt, dass keine zwei Personen die Frage jemals auf die gleiche Weise beantworten , und das ist verwirrend. Aus diesem Grund bitten Sie hier um eine einfache Erklärung. Ja?

Kurze No-Jargon-Antwort:

  1. Viele einleitende Erklärungen springen schnell in "OOP Real World" -Beispiele. Diese können mehr verwirren als helfen, also zögern Sie nicht, dies vorerst zu ignorieren.
  2. Sie können sich Quellcode einfach als "Funktionsblöcke" vorstellen, die zufällig in einzelnen Dateien gespeichert werden.
  3. Es gibt verschiedene Möglichkeiten, diese "Brocken" zu organisieren. abhängig von Konventionen der Programmiersprache, dem Hintergrund und der Ausbildung der Entwickler oder einfach nur alten persönlichen Vorlieben.
  4. OOP und prozedurale Programmierung sind einfach zwei allgemein anerkannte Hauptmethoden zum Organisieren und Anordnen dieser "Codestücke".

Lange No-Jargon-Antwort:

Procedural vs OOP ist nur ein Aspekt eines grundlegenden Themas der Computerprogrammierung: Wie Sie Ihren Code leicht verständlich machen und professionell pflegen können . Sie können tatsächlich "prozeduralen" Code schreiben, der einigen der Prinzipien von OOP folgt, sodass die beiden nicht unbedingt gegensätzlich sind.

Ihr Verständnis wird wirklich wachsen, wenn Sie andere objektorientierte Programmiersprachen lernen , unter denen PHP ein "neues Kind auf dem Block" ist.

Hier ist ein kurzer Überblick darüber, was Sie beim Aufbau von Erfahrungen lernen werden:

  • Sie können PHP-Quellcode schreiben, der nützliche Aufgaben erledigt
  • Sie können nützliche Aufgaben in organisieren „Brocken“ von Code
  • Sie können sich "Codestücke" unabhängig von den einzelnen Dateien vorstellen, in denen sie gespeichert sind
  • Manchmal verhalten sich diese "Codeabschnitte" basierend auf den von Ihnen übergebenen Parametern unterschiedlich
  • Codestücke, die Parameter akzeptieren, werden als "Funktionen" bezeichnet.
  • Funktionen können zusammen "aufgeteilt" werden, und es gibt verschiedene Möglichkeiten, dies zu tun:
    • Zum Beispiel: Sie könnten nur eine große PHP-Datei mit allen Funktionen haben, die Sie jemals in Ihrem ganzen Leben geschrieben haben, aufgelistet in alphabetischer Reihenfolge nach Funktionsnamen
    • Beispiel: Sie können mehrere PHP-Dateien mit Funktionen haben, die nach Themen unterteilt sind [z. B. Funktionen zum Ausführen grundlegender Zeichenfolgenmanipulationen, Funktionen zum Verarbeiten von Arrays, Funktionen zum Eingeben / Ausgeben von Dateien usw.]
  • OOP ist eine spezielle Methode, um Funktionen zu einer "Klasse" zusammenzufassen.
  • Eine Klasse ist nur eine weitere Ebene des "Chunking" von Code, damit Sie ihn als einheitliches Ganzes behandeln können
  • Eine Klasse kann als "Chunking" von Methoden und Eigenschaften betrachtet werden

    • Methoden sind einfach Funktionen, die auf sinnvolle Weise logisch miteinander verbunden sind. Die Wörter "Methode" und "Funktion" sind im Grunde zwei verschiedene Begriffe für dieselbe Sache.
    • Eigenschaften sind einfach Datenwerte, die sich auf die Klasse beziehen. Dies sind Werte, die absichtlich nicht für eine einzelne Funktion isoliert sind, da mehr als eine der Funktionen in der Klasse Zugriff darauf haben sollte.
      • Beispiel : Wenn Ihre Klasse über eine Reihe von Methoden zur Durchführung der Astronomie verfügt, können die Eigenschaften der Klasse die Werte für bestimmte berühmte Zahlen sein, über die alle astronomischen Methoden Bescheid wissen müssen (wie Pi, Lichtgeschwindigkeit, Abstand zwischen bestimmten Planeten, etc.).
    • Hier werden die meisten OOP-Erklärungen verwirrend, weil sie in " Beispiele aus der realen Welt " verzweigen, die schnell vom Thema abweichen können . Oft ist "reale Welt" ein Euphemismus für die ontologischen Perspektiven eines bestimmten Individuums. Dies ist in der Regel nur dann nützlich, wenn Sie das Konzept bereits gut genug verstanden haben, um es jemand anderem beizubringen.
    • Um OOP ohne Verwirrung zu verstehen, können Sie die Beispiele der "realen Welt" vorerst überspringen und sich nur auf den Code konzentrieren. Eine Klasse ist einfach eine Möglichkeit, Funktionen (auch als Methoden bezeichnet) und Eigenschaften (auch als Daten bezeichnet) als PHP- Code in einem oder mehreren verwandten "Chunks" zu speichern, wobei sich jeder einzelne "Chunk" mit einem bestimmten Thema oder einer bestimmten Funktionalität befasst. Das ist alles, was Sie wissen müssen, um loszulegen.
  • Eine Klasse ist nützlich, weil Sie damit Ihren Code auf einer sehr hohen Ebene so organisieren können, dass Sie ihn leicht verstehen, verwenden und warten können.

  • Wenn jemand viele Funktionen geschrieben und in viele Klassen unterteilt hat und diese dazu gebracht hat, auf coole Weise zusammenzuarbeiten, packt er das Ganze zusammen und nennt es ein "Framework" .
  • Ein Framework ist nur die nächsthöhere Ebene des "Chunking" (einschließlich Codierungsstil und Konventionen), auf die sich eine oder mehrere Personen einigen, weil sie die Art und Weise mögen, wie der Code organisiert ist und zu ihrem Arbeitsstil, ihren Vorlieben, Werten und Plänen für die Welt passt Herrschaft usw.

Siehe auch

dreftymac
quelle
1
@dreftymac: Sie hätten mir Feedback geben können, was in meinen Ergänzungen verbessert werden könnte, anstatt es unbeholfen hinter meinem Rücken zu löschen. Ja wirklich. Ich begrüße konstruktive Kritik und lade Sie ein, dasselbe zu tun.
Flavius
1
@Flavius ​​OK. Dankbarkeit für die Mühe und dafür, dass Sie sich einen Moment Zeit genommen haben, um Ergänzungen vorzunehmen. Nachdem Sie darüber nachgedacht haben, erscheint es vernünftig, dass die von Ihnen vorgenommene Ergänzung eine eigenständige Antwort verdient hat.
Dreftymac
2
Ein Zusatz: Eine Klasse ist auch nützlich, um Funktionsdaten zusammenzufassen, damit Sie sie nicht in Parametern weitergeben müssen.
Chiborg
1
+1 speziell für Ihre Definition von "Framework". Ich habe gehört, dass viele Leute versuchen zu erklären, was ein Framework ist, und ich denke, Ihr Framework ist am einfachsten zu verstehen.
TecBrat
1
Kumpel ... das ist die beste Erklärung, die ich über oop vs prozedural gelesen habe und ich habe VIEL gelesen! tolle Arbeit wirklich effektiv, einfach und direkt auf den Punkt. Sie haben Recht, die Leute verwenden immer Beispiele aus der realen Welt und es ist keine einfache Art, etwas zu verstehen, es ist Mist!
Thechrishaddad
25

OOP ist nichts anderes als ein Designmuster. Wenn Sie gerade erst anfangen, lernen Sie die Grundlagen, indem Sie sich auf den prozeduralen Ansatz konzentrieren. Machen Sie sich vor allem mit Grundprinzipien wie Schleifen, Bedingungen und dem Aufrufen anderer Prozeduren vertraut.

Machen Sie es sich beim Erstellen Ihres Prozedurcodes zur Gewohnheit, verwandte Methoden in eine einzelne Quelldatei einzufügen. Lernen Sie, Ihre Prozeduren in logische Einheiten zu unterteilen, und schon beginnen Sie, objektorientiert zu werden. Grundsätzlich ist ein Objekt nichts anderes als eine Sammlung von Methoden, die miteinander in Beziehung stehen, nur weil sie mit demselben Datensatz arbeiten. (Ich spreche hier nicht von Datenbanken, sondern von Anwendungsdaten!)

OO wird hauptsächlich verwendet, um Ihren Code logischer zu gestalten, indem Sie alles in einfache Blöcke unterteilen. Durch die Kombination der richtigen Blöcke erhalten Sie eine vollständige Anwendung. OO ist keine Silberkugel oder ein goldener Hammer, der all Ihre Probleme löst. Aber es macht es einfacher, Ihren Code zu verstehen.

Andererseits schaffen es einige Leute immer noch, Objekte komplett durcheinander zu bringen, indem sie sie einfach mit Hunderten von Methoden in riesige Superobjekte verwandeln. Solche Objekte unterscheiden sich kaum von einem regulären prozeduralen Ansatz, einfach weil eine Vielzahl von Methoden ohne wirkliche Logik miteinander kombiniert werden. Es ist ein Fehler, der leicht zu machen ist, wenn Leute zu schnell anfangen, OOP zu machen.

Wim zehn Brink
quelle
3
Ich finde, dass OOP-Code viel verwirrender ist. Versuchen Sie zum Beispiel, in den Bauch von Prestashop zu schauen.
AndrewC
Toller Punkt über Pretashop. Magento ist selbst ein dampfendes Tier, aber wir haben uns entschlossen, dabei zu bleiben, weil Alternativen wie Pretashop oder WooComm noch schlechter sind.
PKHunter
6

Sie sollten beides lernen. Objekte sind nur eine der vielen möglichen Abstraktionen, und Abstraktion ist das, worum es bei der Programmierung letztendlich geht. Beginnen Sie jedoch mit prozeduralen Dingen und fügen Sie später Objekte hinzu, da die Interna von PHP-Objekten ohnehin prozedural sind.

Wie für Frameworks; Lerne zuerst die Grundlagen der Sprache, schreibe wegwerfbare experimentelle Programme und so weiter. Später können Sie sich mit Frameworks vertraut machen und überlegen Sie sich , ob Sie in einem bestimmten Kontext einige von ihnen nützlich finden. Sie sind definitiv nicht obligatorisch.

Joonas Pulakka
quelle
6

Um die großartigen Antworten oben hinzuzufügen. Sie sollten OOP als eine natürliche Weiterentwicklung Ihres Codierungsstils betrachten. Wenn Sie mit dem Schreiben eines kleinen Programms beginnen, müssen Sie möglicherweise nur ein paar Zeilen PHP-Code zusammenstellen und diese dann in Funktionen gruppieren. Je mehr Funktionen Sie schreiben, desto mehr müssen Sie möglicherweise benötigen um sie besser in Klassen zu organisieren. OOP lassen Sie einfach Ihre Codes besser strukturieren - was eine bessere Codepflege ermöglicht.

Rawdreeg
quelle
6

Prozedurale PHP und OOP verwenden den gleichen PHP-Code. Der einzige Unterschied besteht darin, dass Sie sich bei der Prozedur auf eine Aufgabe konzentrieren und das war's. In oop organisieren Sie Ihren Code mithilfe von Mustern oder Blöcken, die in vielen verschiedenen Bereichen des Codes wiederverwendet werden können.

Einfache Antwort ist, dass Sie PHP kennen und verstehen müssen. Sie können es auf php.net lernen. Sobald Sie es verstanden haben, können Sie beginnen, Ihren Code in Chucks zu organisieren.

Der Prozedurcode verwendet Funktionen und Variablen.

Sobald Sie einen Überblick haben, können Sie die Funktionen und Variablen in Klassen organisieren. Wir rufen die Funktionen als Methoden und Variablen als Eigenschaften auf.

Viel Glück.

Edward Manda
quelle