当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?

Posted

技术标签:

【中文标题】当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?【英文标题】:Where to register autoload when the vendor is not managed with composer in Symfony 2.1? 【发布时间】:2012-07-14 19:48:28 【问题描述】:

我正在使用 symfony 2.1,我想向供应商添加一个库。 packagegist 中不存在该库。我无法用作曲家来管理它。当我通过 composer 安装包或其他供应商时,它会为我管理自动加载。但是当供应商不使用composer管理时,在哪里注册自动加载呢?

【问题讨论】:

您是否正在调查 Satis? github.com/composer/satis 和 getcomposer.org/doc/articles/… 【参考方案1】:

你只需要修改你的 composer.json 文件的自动加载值:

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

//composer.json 在你的 symfony 2.1 项目中 “自动加载”: “psr-0”: "": "src/", “你的图书馆”:“src/location/of/lib” ,

然后在你的控制器中例如:

命名空间 Acme\UserBundle\Controller; 使用 Symfony\Bundle\FrameworkBundle\Controller\Controller; 使用 Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 使用 YourLibrary\FolderName\ClassName; 类 DefaultController 扩展控制器 /** * @路线(”/”) * @模板() */ 公共函数 indexAction() $lib = 新的类名(); $lib->getName(); 返回数组('name' => $name);

【讨论】:

我认为.php 无法结束use 语句的行?【参考方案2】:

您可以将不在 packagist 中的库添加到作曲家。 您必须将它们添加到您的 composer.json 文件的 repositories 数组中。

这里介绍了如何加载包含 composer.json 文件的 github 存储库,即使它不在 packagist 上(例如,您会为修复存储库所做的分叉):http://getcomposer.org/doc/02-libraries.md#publishing-to-a-vcs

以下是如何加载 git/svn 存储库或 zip 文件中的库:http://getcomposer.org/doc/05-repositories.md#types

使用各种可能性的示例:


  "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.*"
  

【讨论】:

【参考方案3】:

您应该能够使用 Composer 注册无法通过 packagist 获得的供应商库。我不完全确定,但这应该可以正常工作:


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

【讨论】:

以上是关于当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?的主要内容,如果未能解决你的问题,请参考以下文章

容器看不到其中预建的供应商文件夹

Symfony 3.1 作曲家冲突

在Composer更新后找不到Symfony AbstractController

Symfony 5 作曲家更新失败并带有安全检查器

从 Symfony 3.4 升级到 4:升级 symfony 时出错

Symfony 2.4.2 作曲家迁移包