Ich würde gerne wissen, Was ist der beste Weg, um Drittanbieter-PHP-Dateien in symfony2 einzuschließen. Ich benutze ein anderes php - ajax Paket zum Hochladen von Dateien in meiner symfony2 Anwendung. Das Paket bietet mir einige PHP-Codes, die ich in meinem Symfony-Controller verwenden muss. Ich erstelle Objekte dieses Codes in meinem Controller. Also würde ich gerne wissen, wo ich den Code oder die Datei von Drittanbietern platzieren kann und wie ich Objekte dieses Codes in meinen Symfony2-Controller einbinden oder erstellen kann. Verwenden wir in symfony2 auch require oder include. Wenn ja, ist das der einzige Ansatz.Der beste Weg, um 3rd-Party-Dateien mit Symfony2 zu integrieren
Antwort
Ich bin nicht so sicher über den Versuch, Namespaces zu einer Drittanbieter-Bibliothek hinzuzufügen. Twig zum Beispiel verwendet keine Namensräume. Und das ist wirklich nicht nötig. Betrachten Sie zum Beispiel einen Fall, in dem Sie die PDF-Komponente aus der Bibliothek Zend_Framework 1 verwenden möchten.
In Ihrem app/autoload.php Datei, die Sie so etwas wie tun würde:
$loader->registerPrefixes(array(
'Twig_Extensions_' => $ws . 'Symfony/vendor/twig-extensions/lib',
'Twig_' => $ws . 'Symfony/vendor/twig/lib',
'Zend_' => $ws . 'ZendFramework-1.0.0/library',
));
// And since Zend internally uses require/include we need to set an include path
ini_set('include_path','.' .
PATH_SEPARATOR . $ws . 'ZendFramework-1.0.0/library'
);
An dieser Stelle sollten wir dritten Teil Objekte innerhalb der Controller erstellen können, während der Vermietung der Autoload-System kümmern zu finden und zu einschließlich der Klassen:
$page = new \Zend_Pdf_Page(\Zend_Pdf_Page::SIZE_A4);
$doc->pages[] = $page;
$font1 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_HELVETICA);
$font2 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_COURIER_BOLD);
Sie müssen die \ verwenden, um den Mangel an Namespacing zu umgehen.
Diese Antwort geht davon aus, dass Ihre 3rd-Part-Bibliothek der mehr oder weniger standardisierten Klassenbenennungskonvention folgt. Wenn es seine eigene automatische Ladefunktion hat, dann rufen Sie es einfach von autolaod.php. Und wenn Sie das Autoloading überhaupt nicht verwenden möchten, legen Sie einfach den Include-Pfad und das Include fest.
The documentation erklärt die Verzeichnisstruktur im Detail.
Im Grunde können Sie sie überall hin mitnehmen, aber aus Gründen der Konsistenz und der Best Practices sollten Sie die Bibliotheken von Drittanbietern in das Verzeichnis vendor/
einfügen.
Dann können Sie die relevanten Dateien mit Namespaces einschließen.
Große Antwort! Ich hatte diese Situation eine Weile zurück und löste es genau so ... –
@Hakan Deryal. Vielen Dank für Ihre Antwort, können Sie mir bitte sagen, wenn ich einen Ordner als ThirdParty im Vendor erstellt habe und meine ThirdParty-Datei dort so platzieren, dass Vendor/ThirdParty/Myfile.php wie könnte ich es in meinem Acme Bundle aufnehmen. – ScoRpion
Verwendet die Drittanbieteranwendung Namespaces? Sie können es überprüfen, indem Sie nach einer Zeile am Anfang der Datei wie 'Namespace ....' suchen. –
- 1. Der beste Weg, um Sound in die Website zu integrieren
- 2. Der beste Weg, um Rollover zu machen?
- 3. Der beste Weg, um Fehler zu behandeln
- 4. Der beste Weg, um Erweiterungsmethoden zu implementieren
- 5. Was ist der beste Weg, um mit OSGI zu beginnen?
- 6. Der beste Weg, um Fehlermeldungen zu behandeln
- 7. Der beste Weg, um Stringstream zu leeren?
- 8. Der beste Weg, um IronPython zu erkennen
- 9. Was ist der beste Weg, um numpy in eine Meteorjs Web App zu integrieren?
- 10. Was ist der beste Weg, um eine Sitemap zu erstellen?
- 11. Was ist der beste Weg, um ein externes Build-Tool in Eclipse zu integrieren?
- 12. Was ist der beste Weg, um Links und Code in ein Textfeld für asp.net zu integrieren?
- 13. Was ist der beste Weg, um Kommentare in Chef-Rolle zu integrieren?
- 14. Der beste Weg, um Tabellen mit Beziehungsinformationen zu "glätten"?
- 15. Der beste Weg, um "gespritzte" Parameter mit YARD zu dokumentieren?
- 16. Der beste Weg, um fehlende Params mit StrongParameters zu umgehen?
- 17. Der beste Weg, um ganzzahlige Flags mit Kotlin zu kombinieren?
- 18. Was ist der beste Weg, um mit NHibernate zu beginnen?
- 19. Der beste Weg, um Tabelle mit Specflow zu verwenden
- 20. Der beste Weg, um sich lokal mit MySQL zu verbinden?
- 21. Der beste Weg, um Einkaufswagen mit PHP/MySQL zu implementieren
- 22. Richtiger Weg, um WebRTC in die Electron App zu integrieren?
- 23. beste Weg, um Ergebnisse zu speichern
- 24. Was ist der beste Weg, ExpressionEngine-Mitglieder mit MailChimp zu integrieren?
- 25. Der beste Weg, um "Pfeil" in div
- 26. Der beste Weg, um bootstrap-wysihtml5 Ausgabe
- 27. Der beste Weg, um Iterator in Javascript
- 28. Der beste Weg, um "erweiterbare Enums" in Annotationen zu unterstützen?
- 29. Der beste Weg, um die Zeichenfolge in PHP zu komprimieren
- 30. Was ist der beste Weg, um eine Animation zu fahren?
Dies ist der richtige Weg, um es zu tun. Wenn eine Bibliothek keiner Namenskonvention folgt, würde ich vorschlagen, mit composer ([repo] (https://github.com/composer/composer), [symfony] (https://github.com/symfony/symfony) zu beginnen -Standard)). Es ermöglicht das Mappen einer beliebigen Bibliothek, wodurch das Autoloading auch für solche Bibliotheken möglich wird, die nicht der Konvention folgen. – gilden