Ich versuche, mich in die OOP-Entwicklung zu bewegen, und gehe hier hin, weil ich es satt habe, im Internet zu suchen und nur die grundlegendsten Informationen darüber zu finden, was Klassen sind und wie sie voneinander erben können - das Ich verstehe.
Was ich noch nicht verstehe, ist, wie all diese Klassen in verschiedenen Dateien gespeichert werden können, die sich um eine Ordnerstruktur gruppieren. Und alles, was Sie tun müssen, um die Klasse zu verwenden, ist nur der Name in Ihrem Code. Wie funktioniert das genau?
Und zu einer verwandten Anmerkung: Wenn jemand ein gutes Buch oder ein Online-Tutorial empfehlen kann, das eine gute Grundlage für OOP (vorzugsweise auf PHP-Basis) bietet, wäre ich sehr dankbar.
Die Antwort auf die Technologie lautet PHP Autoloading .
Die Antwort auf die Implementierung lautet wie folgt:
Eine gebräuchliche Methode hat mit den Namen von Klassen zu tun, die sich auf die Ordnerstruktur beziehen. Es gibt Artikel da draußen, aber hier ist eine kurze Zusammenfassung:
Wenn Sie Ihren Autoload-Code einrichten, nehmen Sie den Klassennamen und ersetzen Unterstriche durch Schrägstriche. Auf diese Weise können Sie Ihre Klassen in Ordnern organisieren.
Zum Beispiel:
Klassenname: Database_Provider_MySQL
Datei: Datenbank / Provider / MySQL.php
Wenn Sie also beim automatischen Laden den eingehenden Klassennamen verwenden, ersetzen Sie die Unterstriche durch Schrägstriche. Dann füge diese spezifische Datei hinzu.
Damit wird erreicht, was Sie erreichen möchten. Sie können einfach eine Klasse laden, indem Sie eine neue Instanz davon erstellen. Sie müssen nie die Include-Anweisung für diese Klassen verwenden.
Denken Sie daran, nicht in die Tiefe zu gehen, wo Sie mit 6 oder mehr Levels enden. Ich denke zwischen 3 und 5 ist ein gutes Maximum.
Dies erfordert auch, dass Sie nur 1 Klasse pro Datei behalten (ähnlich wie Java). Obwohl es unbequem erscheinen mag, macht es das Lokalisieren von Code sehr viel einfacher.
PHP verfügt über Funktionen zum automatischen Laden von Dateien basierend auf einigen von Ihnen getätigten Anrufen. PHP: Autoloading Objects ist Ihre definitive Ressource in dieser Angelegenheit.
Ich habe eine Bemerkung, obwohl ich ein riesiger (Understatement) Fan von PHP bin (down vote mich alles was du willst, ist mir egal! Eines Tages werden wir akzeptiert ;-), PHP ist nicht wirklich der Pfad den du willst beim Lernen von OOP nach unten gehen.
PHP macht Dinge, naja, anders. Anders ist gut, versteh mich nicht falsch, ich liebe es anders, aber es ist auch unkonventionell. Unkonventionell, auch gut, fast ein Synonym für Google, wenn Sie mich fragen, aber wir leben nicht in einer unkonventionellen Welt! Du kannst nicht einfach zu jemandem gehen und sagen; "Hey, ich kenne OOP, ich habe es in PHP gelernt". Es mag sich reimen, aber die Leute werden dich danach nicht ernst nehmen. Frag mich nicht warum, aber es ist so wahr wie gelbe Bananen. Ich war dort.
Wenn Sie also konventionelles OOP lernen wollen, versuchen Sie es mit Java. es ist so konventionell wie es kommt (was weder schlecht noch gut ist).
Ich habe mich ehrlich gesagt nie so oft in einem 20-Satz-Beitrag unterstützt. Muss aber ma 'rep sehen. :-D
PHP's include_path Konfigurationseinstellung teilt PHP mit, in welche Verzeichnisse nach Dateien gesucht werden soll.
Wenn Sie so etwas tun:
%Vor%Dann durchsucht PHP das aktuelle Verzeichnis nach 'MyClass.php' und durchsucht dann alle Verzeichnisse auf dem include_path, wenn es die Datei nicht finden kann. Viele Klassenbibliotheken machen so etwas:
%Vor%Es kann mit automatischem Laden weiter vereinfacht werden: Ссылка
Andere Bibliotheken enthalten einfach jede Datei die Verwendung direkt in der Basispaketdatei, so dass alle diese Klassen sofort verfügbar sind.
Unterschiedliche Sprachen / Frameworks haben verschiedene Möglichkeiten, aber es ist essentiell, dass es eine Liste mit Standardstandorten gibt, die Sie suchen können und / oder Sie können angeben, wo Sie suchen sollen (wie Sie dies wieder tun, hängt von Sprache / Framework ab) . Ich weiß, dass die Frage als php markiert ist, aber die Frage erwähnt nicht spezifisch php, also dachte ich, dass ich eine etwas allgemeinere Antwort geben würde
Ich fand es sehr hilfreich, bestehenden Code zu betrachten, wenn meine Forschungsanstrengungen gegen eine Wand gehen. Es gibt eine Vielzahl von Skripten, Paketen, Frameworks und Anwendungen, die nach exzellenten PHP-Programmierpraktiken arbeiten, die studiert und gelernt werden können. Es gab einige Fragen zu SO, die ein paar gute aufzeigen.
Mein Favorit war bisher das Zend Framework .
Und auf eine verwandte Anmerkung, wenn jemand kann empfehlen Sie ein gutes Buch oder online Tutorial, das ein gutes liefert Grundlage in OOP (vorzugsweise php basierend) Ich wäre sehr dankbar.
Was Sie beschreiben, hat nichts mit der objektorientierten Programmierung an sich zu tun. Es ist nur ein Merkmal bestimmter Sprachen. Diese Sprachen tun dies, indem sie eine Art Konvention dafür durchsetzen, wie Dateien gespeichert werden (zum Beispiel, die Klasse foo.bar.quux
muss sich möglicherweise an einem Standardstandort bei foo / bar / quux.py befinden).
Kopf erste objektorientierte Analyse und Design. Head First ist eine großartige Buchreihe mit einfachen, aber schockierend hilfreichen Beispielen. Ihre ganze Art, Ihnen die Informationen zu präsentieren, ist großartig. Sie könnten sogar einige objektorientierte PHP-Bücher haben!
Tags und Links class php inheritance oop