Mi piacerebbe sapere Qual è il modo migliore per includere file php di terze parti in symfony2. Sto usando un diverso pacchetto php - ajax per caricare file nella mia applicazione symfony2. Il pacchetto mi offre un codice php oops che ho bisogno di usare nel mio controller symfony. Sto creando oggetti di quel codice nel mio controller. Quindi mi piacerebbe sapere dove posso mettere quel codice o file di terze parti e come posso includere o creare oggetti di quel codice nel mio controller symfony2. Usiamo require o include anche in symfony2. Se è così è l'unico approccio.Miglior approccio Per includere file di terze parti con Symfony2
risposta
Non sono sicuro di provare ad aggiungere spazi dei nomi a una libreria di terze parti. Il ramoscello, per esempio, non usa gli spazi dei nomi. E non c'è davvero bisogno. Si consideri ad esempio un caso in cui si desidera utilizzare il componente PDF dalla libreria Zend_Framework 1.
Nel file app/autoload.php si dovrebbe fare qualcosa di simile:
$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'
);
A questo punto dovremmo essere in grado di creare oggetti 3a parte interna del controller, mentre lasciando il sistema di caricamento automatico prendersi cura di trovare e comprese le classi:
$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);
È necessario utilizzare \ per ovviare alla mancanza di namespace.
Questa risposta presuppone che la libreria di terze parti segua la convenzione di denominazione delle classi più o meno standard. Se ha la sua funzionalità di caricamento automatico, allora basta chiamarlo anche da autolaod.php. E se non si desidera utilizzare l'autoloading, è sufficiente impostare il percorso di inclusione e includerlo.
The documentation spiega la struttura della directory in dettaglio.
Fondamentalmente, puoi metterli dove vuoi, ma per coerenza e seguendo le migliori pratiche, dovresti mettere le tue librerie di terze parti nella directory vendor/
.
Quindi è possibile includere i file rilevanti con namespace.
Ottima risposta! Ho avuto questa situazione un po 'di tempo fa e l'ho risolto esattamente così ... –
@Hakan Deryal. Grazie per la risposta, puoi dirmi se ho creato una cartella come terza parte nel venditore e ho inserito il mio file di terze parti in tale posizione che vendor/thirdparty/myfile.php come potrei includerlo nel mio pacchetto Acme. – ScoRpion
L'applicazione di terzi utilizza gli spazi dei nomi? Puoi verificarlo cercando una riga nella parte superiore del file come "namespace ...." –
- 1. Dove memorizzare semplici classi di terze parti in Symfony2?
- 2. Miglior approccio di registrazione per l'app composita?
- 3. Qual è la procedura migliore per includere file jar di terze parti in un programma Java?
- 4. Eseguire il file DLL di terze parti con PowerShell
- 5. Allenamento interno: miglior approccio?
- 6. Libreria di terze parti con carosello Android
- 7. Django's I18N con app di terze parti
- 8. COM surrogato per componente di terze parti
- 9. Override di terze parti JS
- 10. macdeployqt e librerie di terze parti
- 11. Il miglior approccio per l'analisi XML sull'iPhone
- 12. Utilizzo del pacchetto javascript di terze parti con Meteor
- 13. Rischi per la sicurezza di includere un iFrame di terze parti
- 14. Collegamento di librerie di terze parti (libs.a) con NDK
- 15. Importazione di framework di terze parti in "SupportCode.swift" di Playground
- 16. Installazione di jquery-ui di terze parti con angular-cli
- 17. i * deve * memorizzare credenziali di terze parti nel mio database. miglior modo?
- 18. Miglior approccio per crittografare i file di grandi dimensioni con php
- 19. Gestione delle dipendenze interne di terze parti
- 20. Raccomandazione per fornitori di appartenenze di Asp.Net di terze parti
- 21. iOS8 UIKeyboardWillShowNotification Altezza tastiera di terze parti
- 22. Ricerca di licenze di terze parti con Nuget
- 23. Classi di serializzazione di terze parti con XML semplice (org.simpleframework.xml)
- 24. Android: Avvio di un'attività per un'altra app di terze parti
- 25. JS di terze parti in Angular2 typescript
- 26. Iniezione JavaScript su pagine di terze parti
- 27. resignFirstResponder() in tastiere di terze parti
- 28. Applicazione dei metodi di terze parti virtualità
- 29. Librerie di terze parti in CMake
- 30. Ruby, Qt e widget di terze parti
Questo è il modo corretto per farlo. Se una libreria non segue alcuna convenzione di denominazione, suggerirei di iniziare a usare il compositore ([repo] (https://github.com/composer/composer), [symfony] (https://github.com/symfony/symfony -standard)). Permette la mappatura di qualsiasi libreria, rendendo possibile l'autoloading anche per quelle libs che non seguono la convenzione. – gilden