Vraag Waar registreren autoload wanneer de leverancier niet wordt beheerd met componist in Symfony 2.1?


Ik gebruik symfony 2.1 en ik wil een bibliotheek toevoegen aan leveranciers. De bibliotheek bestaat niet in packagist. Ik kan het niet aan met componist. Wanneer ik bundels of andere leveranciers via componist installeer, wordt de autoload voor mij beheerd. Maar waar registreren autoload wanneer de leverancier niet wordt beheerd met componist?


14
2017-07-15 22:41


oorsprong


antwoorden:


U kunt bibliotheken toevoegen aan componisten die niet in packagist zijn. Je moet ze toevoegen in de repositories reeks van uw composer.json het dossier.

Ga als volgt te werk om een ​​github-repository met een composer.json-bestand te laden, ook als deze niet op packagist staat (bijvoorbeeld een fork die je zou hebben gedaan om een ​​repository te repareren): http://getcomposer.org/doc/02-libraries.md#publishing-to-a-vcs

En hier is hoe je een bibliotheek laadt die op een git / svn repository staat, of een zipbestand: http://getcomposer.org/doc/05-repositories.md#types

Een voorbeeld met verschillende mogelijkheden:

{
  "repositories": [
    {
      "type": "vcs",
      "url": "http://github.com/igorw/monolog"
    },
    {
      "type": "package",
      "package": {
        "name": "smarty/smarty",
        "version": "3.1.7",
        "dist": {
          "url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
          "type": "zip"
        },
        "source": {
          "url": "http://smarty-php.googlecode.com/svn/",
          "type": "svn",
          "reference": "tags/Smarty_3_1_7/distribution/"
        },
        "autoload": {
          "classmap": [
            "libs/"
          ]
        }
      }
    }
  ],
  "require": {
    "monolog/monolog": "dev-bugfix",
    "smarty/smarty": "3.1.*"
  }
}

16
2017-07-15 22:53



U zou Composer moeten kunnen gebruiken voor het registreren van leveranciersbibliotheken die niet beschikbaar zijn via packagist. Ik ben niet helemaal zeker, maar dit zou goed moeten werken:

{
    "autoload": {
        "psr-0": {
            "Acme": "src/",
            "MyVendorLib": "vendor/my-vendor/src",
            "AnotherLib": "vendor/another-vendor/lib"
        }
    }
}

8
2017-07-15 22:46



U hoeft alleen uw composer.json-bestand aan te passen voor de autoload-waarde:

http://getcomposer.org/doc/04-schema.md#autoload

//composer.json in uw symfony 2.1-project
"autoload": {
     "psr-0": {
         "": "src /",
         "YourLibrary": "src / location / of / lib"
     }
},

En dan in je controller bijvoorbeeld:


naamruimte Acme \ UserBundle \ Controller;

gebruik Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller;
gebruik Sensio \ Bundle \ FrameworkExtraBundle \ Configuration \ Route;
gebruik YourLibrary \ FolderName \ ClassName;

class DefaultController breidt Controller {uit

/ **
 * @Route ("/")
 * @Template ()
 * /
openbare functie indexAction ()
{
   $ lib = new ClassName ();
   $ Lib-> getName ();

   return array ('name' => $ naam);
}

}


3
2018-02-15 17:37