如何在Symfony2.1中为旧版本的Symfony注册捆绑包?

时间:2012-11-12 05:13:21

标签: symfony symfony-2.1 composer-php

我正在尝试在我的Symfony2.1应用中使用它们EntityAudit extension for Doctrine2

我对此非常陌生,我刚刚开始意识到多年来为Symfony安装新捆绑包的方法有多少“正确”。某种“Deps”文件曾经存在但不再存在?安装Symfony时,“使用Composer”是一个选项 - 但纯粹是一个选项,它似乎。现在我开始认为那不是真的。

在EntityAudit的说明中它指的是“Autoload”,基于其他东西,我显然应该修改我的Autoload.php中的registerNamespaces数组。除了我没有那个。所以我找到了this link,那个人指出Symfony2.1不再那样做了,而是支持使用Composer。

虽然我不知道如何在这种情况下使用Composer。实际上,我根本不知道如何使用它,但我似乎已经在其中做了1或2个基本的事情 - “更新”本身和“安装”......供应商?无论如何,我找不到足够的指令来适应这种需要。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

deps文件在2.0中用于管理依赖项。 2.1版本使用了更好的Composer依赖管理工具。

使用composer

安装

首先你需要一些关于作曲家的basix。例如,阅读这篇文章:http://net.tutsplus.com/tutorials/php/easy-package-management-with-composer/

在使用composer安装软件包之前,您应该查找该软件包的Packagist软件包。对于SimpleThings\EntityAuditBundle,您应该查找simplethings/entity-audit-bundle个包,它确实存在:https://packagist.org/packages/simplethings/entity-audit-bundle

  

<强>旁注

     

Packagist是Composer的主要存档。   如果您正在搜索捆绑包,那么您可以做的最好的事情就是退房   KnpBundles,这是Symfony Bundles的非官方成果。   如果一个包中包含一个README文件,它会显示在那里,如果它有一个Packagist   包它显示包的链接。这是一个非常有用的网站,可以开始搜索   对于捆绑。

现在您有了包名,您应该确定要使用的版本。由于这是一个未完成的捆绑包,我们可以使用dev-master版本来使用最新版本。但是dev-master版本可能用于Symfony2.2,如果我们使用Symfony2.1,我们应该使用另一个版本,这应该在README文件中(在包中,你可以查看Github或KnpBundles)。如果它不在README中,您可以使用所需的版本。可以找到有关版本的说明的示例in the StofDoctrineExtensionsBundle

现在我们可以将包添加到我们的composer.json文件中并更新依赖项。您可以手动执行此操作:

  1. 将其添加到composer.json文件中:

    {
        ...,
        "require": {
            ...,
            "simplethings/entity-audit-bundle": "dev-master"
        }
    }
    
  2. 更新依赖关系

    $ php composer.phar update simplethings/entity-audit-bundle
    

    或更新所有依赖项

    $ php composer.phar update
    
  3. 或者你可以这样做是一个命令:

    1. 运行此命令(包括composer.json中的包并更新包)

      $ php composer.phar require simplethings/entity-audit-bundle:dev-master
      
    2. 现在捆绑包已安装到我们的Symfony项目中(vendor/simpletings/),自动加载器识别此捆绑包。我们现在唯一需要做的就是在AppKernel

      中注册捆绑包
      // app/AppKernel.php
      
      // ...
      class AppKernel extends Kernel
      {
          // ...
      
          public function registerBundles()
          {
              $bundles = array(
                  ...,
                  new SimpleThings\EntityAudit\SimpleThingsEntityAuditBundle(),
              );
      
              // ...
          }
      }