Ich habe das schon seit Stunden versucht - und ich finde keine Beiträge, die funktionieren. Ich füge benutzerdefinierte php-Klassen dem Symfony2-Lieferantenverzeichnis hinzu.
Zum Beispiel (andere Lieferantenstruktur kopiert) :
Hersteller / mylib / mylib / src / Mylib / Lib / Class.php
Ich habe dann die root composer.json aktualisiert, indem ich Folgendes hinzugefügt habe:
%Vor%Ich habe auch eine composer.json in Vendor / mylib / mylib erstellt, die Folgendes enthielt:
%Vor%Ich habe einen Namespace in Class.php hinzugefügt:
%Vor%In einem meiner Bündel habe ich folgendes hinzugefügt:
%Vor%Der Fehler, den ich bekomme, ist:
FatalErrorException: Fehler: Die Klasse 'MyLib \ Lib \ MyClass' wurde nicht gefunden C: \ xampp \ htdocs \ Meine_CMS \ src \ Cms \ CmsBundle \ Entity \ Cms.php Zeile 13
Was mache ich falsch?
In PHP-Klassen werden automatisch über __autoload
automatisch geladenSymfony kümmert sich in seinem Class Loader darum, aber in der Tat funktioniert es genauso. Es gibt keinen Hintergrund, der alle Verzeichnisse abtastet, also müssen Sie Ihren Namespace manuell hinzufügen.
Sie müssen Ihre Datei autoload.php hinzufügen:
%Vor%Sie sollten wirklich Service-Container verwenden, was im Prinzip die symfonische Art ist, Klassen zu laden.
Hier ist warum:
Symfony kümmert sich im Grunde genommen um die Instanziierung von Klassen für Sie in Ihrem Controller. Alles, was Sie tun müssen, ist folgendes:
Fügen Sie einen Ordner unter Ihrem Pfad namens Bibliotheken - & gt; src / AppBundle / Bibliotheken
Fügen Sie die Klasse zu diesem Ordner mit einem Namespace oben hinzu. Mein Beispiel ist:
%Vor%Fügen Sie Ihrer App dann eine Datei namens services.yml hinzu. app / config / services.yml
Fügen Sie den folgenden Code ein verwenden Sie keine Tabs in der Yml-Datei
%Vor%Fügen Sie dann die dritte Zeile Ressourcen: services.yml zu Ihrer Datei config.yml hinzu.
%Vor%Wenn Sie am oberen Ende des Controllers arbeiten, fügen Sie einfach die Anweisung use
hinzu %Vor%Ruf jetzt deinen Code an
%Vor%echo ist out
%Vor%Die letzte Antwort ist richtig: Ссылка
Ich arbeite für mich aber wichtig ist, dass dies korrekt ist, aber wenn Sie vor der Installation der Bibliothek und Autoload. In meinem Fall habe ich in Symfony 3.2.x meine Bibliothek en composer.json hinzugefügt:
%Vor%Und nach dieser Anweisung:
%Vor%Dann ist alles gut.
Grüße
Tags und Links php symfony composer-php