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?
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:
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.
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.