2

我正在尝试在我的 Symfony2.1 应用程序中为 Doctrine2 使用他们的 EntityAudit 扩展。

我对此很陌生,而且我刚刚开始意识到多年来为 Symfony 安装新包的“正确”方法有多少。某种“Deps”文件曾经存在但不再存在?在安装 Symfony 时,“使用 Composer”是一种选择——但似乎纯粹是一种选择。现在我开始认为这不是真的。

在 EntityAudit 的说明中,它指的是“自动加载”,并且基于其他内容,我显然应该修改我的 Autoload.php 中的 registerNamespaces 数组。除了我没有那个。所以我找到了这个链接,那个家伙表示 Symfony2.1 不再这样做,而是支持使用 Composer。

不过,在这种情况下,我真的不知道如何使用 Composer。实际上,我根本不知道如何使用它,但我似乎在其中做了 1 或 2 件基本的事情——“更新”本身和“安装”.. 供应商?无论如何,我找不到足够通用的说明来适应这种需要。提前感谢您的帮助!

4

1 回答 1

4

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

用作曲家安装

首先你需要一些关于作曲家的基础知识。例如,阅读这篇文章: 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 中,您可以使用您想要的版本。可以在 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
    

或者你可以这样做是一个命令:

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

    $ php composer.phar require simplethings/entity-audit-bundle:dev-master
    

现在这个包被安装到了我们的 Symfony 项目中(in vendor/simpletings/)并且自动加载器识别了这个包。我们现在唯一需要做的就是在以下位置注册捆绑包AppKernel

// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    // ...

    public function registerBundles()
    {
        $bundles = array(
            ...,
            new SimpleThings\EntityAudit\SimpleThingsEntityAuditBundle(),
        );

        // ...
    }
}
于 2012-11-12T08:09:12.473 回答