Wenn PHP-Bibliotheken ihre eigenen Autoloader registrieren können, warum benötigt PSR-0 sie in einheitlichen Verzeichnissen? [geschlossen]

8

Ich baue ein Framework (das ist eine große Vereinfachung - bitte empfehle nicht, ein bestehendes Framework zu verwenden, das ist nicht hilfreich), in das ich andere Bibliotheken integrieren könnte.

Die PSR-0-Empfehlung legt nahe, dass alle Dateien in jedem Unternamespace in ihrem eigenen spezifischen Verzeichnis enthalten sein müssen. Um die Dinge für die Benutzer meines Frameworks weniger komplex zu halten, möchte ich alles in einem Namespace behalten, aber die Dateien in Verzeichnissen organisieren.

Wenn PHP-Bibliotheken ihre eigenen Autoloader mit spl_register_autoload() registrieren können, warum muss diese Verzeichnisstruktur unbedingt eingehalten werden? Ist es möglich / zulässig, einfach PSR-0 zu vermeiden, meinen eigenen Autoloader für meine Klassen zu verwenden und dann (zum Beispiel) den Symfony-Autoloader für alle Symfony-Klassen zu verwenden, die ich verwenden darf?

    
ringmaster 03.12.2012, 21:47
quelle

2 Antworten

6

Niemand zwingt Sie, sich an den Standard zu halten. Sicher, Sie können Ihren eigenen Autoloader erstellen und verwenden.

Die Spezifikation wurde wahrscheinlich mit dem Ziel erstellt, Bibliotheken leichter verständlich zu machen, mit der Idee, dass, wenn der gesamte Code die gleiche Struktur verwendet, jeder sofort wissen sollte, wohin er gehen muss, um eine bestimmte Klasse zu finden.

Folgende Standards haben bestimmte Vorteile, wie:

  • Leute mit Kenntnissen des Standards werden bereits wissen, wie man den Code benutzt
  • Standardkonforme Werkzeuge können so hergestellt werden, dass sie mit dem entsprechenden Code arbeiten (z. B. IDE-Plugins)
  • Code, der die Standard-Compliance voraussetzt, kann bereits mit dem gesamten Code verwendet werden, auch wenn er nicht speziell für Ihren eigenen Code erstellt wurde (z. B. sollten Autoloader von Drittanbietern Ihren Code laden können und Ihr eigener Autoloader in der Lage sein sollte Code von Drittanbietern zu laden)

Ein Nachteil könnte sein, dass Sie den Standard nicht mögen . Wenn das der Fall ist, dann sollten Sie auch die Vorteile abwägen, wenn Sie entscheiden, ob Sie es befolgen oder nicht.

    
rid 03.12.2012, 21:53
quelle
1

Wenn andere Bibliotheken dem Standard entsprechen, können Sie außerdem einen einzelnen Autoloader verwenden, um Klassen aus mehreren Bibliotheken zu laden, anstatt Ihren Autoloader für Ihre Klassen zu verwenden. Anschließend müssen Sie Symfonys Autoloader für seine Klassen und dann Bibliothek laden X's Autoloader für seine Klassen.

Solange der Autoloader PSR-kompatibel ist und die Verzeichnisstrukturen der anderen Bibliothek ebenfalls vorhanden sind, können Sie einen Autoloader verwenden.

    
drew010 03.12.2012 21:56
quelle

Tags und Links