Sono nuovo di Symfony2 e ho affrontato alcuni semplici problemi, ma non sono sicuro di come gestirlo. Ho bisogno di usare una semplice classe di terze parti e non sono sicuro di dove e come memorizzarla nella struttura del progetto. Dovrei memorizzare è un servizio nel mio pacchetto o forse dovrei memorizzarlo nella directory dei fornitori? E se lo memorizzerò nei venditori non è una cattiva pratica archiviare le librerie che non sono supportate da Symfony?Dove memorizzare semplici classi di terze parti in Symfony2?
risposta
Di solito si includono quelli del progetto con Composer. Ti suggerisco di dare un'occhiata a packagist per verificare se c'è un pacchetto Composer per la tua classe, altrimenti non puoi richiederlo con il compositore.
Composer mette le tue classi nella directory vendor
, dovresti mettere tutti i "fornitori" (3a libreria di parti) lì. Dai un'occhiata a dove metterli in quella directory, in modo che il caricatore automatico Composer possa caricarlo automaticamente.
Successivamente, si consiglia di creare un pacchetto per quella classe specifica. È una buona pratica creare un servizio lì. Per esempio, se la classe è Foo
si crea un Acme\FooBundle
che carica il servizio Foo
:
// src/Acme/FooBundle/DependencyInjection/AcmeFooExtension.php
<?php
namespace Acme\FooBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
class AcmeFooExtension extends Extension
{
/**
* this method loads the Service Container services.
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
// load the src/Acme/FooBundle/Resources/config/services.xml file
$loader->load('services.xml');
}
<!-- src/Acme/FooBundle/Resources/config/services.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<!-- Loads the \Foo class as a acme_foo.foo service -->
<service id="acme_foo.foo"
class="\Foo"
></service>
</services>
</container>
Symfony memorizza le librerie di terze parti nella cartella dei fornitori. È un good practice mettere anche la tua classe di terze parti
Se non sai come farlo, probabilmente this question ti aiuterà.
Credo che usare il container di servizio sia una buona pratica. In ogni caso, il container di servizio è predisposto per l'archiviazione delle dipendenze di terze parti e il risparmio dell'accoppiamento lento.
Guarda il docs, c'è scritto come e perché utilizzare il contenitore di servizi.
Buona fortuna.
- 1. Configurazione parti MEF, dove memorizzare?
- 2. Miglior approccio Per includere file di terze parti con Symfony2
- 3. Classi di serializzazione di terze parti con XML semplice (org.simpleframework.xml)
- 4. Dove devo mettere le librerie di terze parti?
- 5. Override di terze parti JS
- 6. Librerie di terze parti in CMake
- 7. JS di terze parti in Angular2 typescript
- 8. resignFirstResponder() in tastiere di terze parti
- 9. In che modo Go aggiorna i pacchetti di terze parti?
- 10. Come pacchettizzare 2 dll di terze parti
- 11. COM surrogato per componente di terze parti
- 12. Django's I18N con app di terze parti
- 13. macdeployqt e librerie di terze parti
- 14. Iniezione JavaScript su pagine di terze parti
- 15. Ruby, Qt e widget di terze parti
- 16. WCF - Autenticazione applicazione di terze parti
- 17. Gestione delle dipendenze interne di terze parti
- 18. Libreria di terze parti con carosello Android
- 19. iOS8 UIKeyboardWillShowNotification Altezza tastiera di terze parti
- 20. Applicazione dei metodi di terze parti virtualità
- 21. JavaScript e cookie di terze parti
- 22. Come ottenere cookie di terze parti?
- 23. i * deve * memorizzare credenziali di terze parti nel mio database. miglior modo?
- 24. Importazione di framework di terze parti in "SupportCode.swift" di Playground
- 25. Come gestire le applicazioni di erlang di terze parti?
- 26. Caching di script di terze parti in Rails 3.1
- 27. ridenominazione di una dll di terze parti in .net
- 28. Raccolta di messaggi da app di terze parti in Django
- 29. Angular2 - Importazione di javascript di terze parti in SystemJS
- 30. Collegamento di librerie di terze parti in VS 2015