0

我使用 Symfony,我需要在我的 autoload.php 文件中添加几个包,该文件位于.../app/文件夹中。所以,我基本上是这样写的:

 <?php
// [snip]

use Doctrine\Common\Annotations\AnnotationRegistry;

    $loader->registerNamespaces(array(
        'Behat\BehatBundle' => '/var/www/testsuite.behat/vendor',
        'Behat\Behat'       => '/var/www/testsuite.behat/vendor/Behat/Behat/src',
        'Behat\Gherkin'     => '/var/www/testsuite.behat/vendor/Behat/Gherkin/src',
        'Behat\Mink'        => '/var/www/testsuite.behat/vendor/Behat/Mink/src',
        'Behat\MinkBundle'  => '/var/www/testsuite.behat/vendor',
        'Goutte'            => '/var/www/testsuite.behat/vendor/Goutte/src',
        'Zend'              => '/var/www/testsuite.behat/vendor/Zend/library',
        'Behat\SahiClient'  => '/var/www/testsuite.behat/vendor/Behat/SahiClient/src',
        'Buzz'              => '/var/www/testsuite.behat/vendor/Buzz/lib'
    ));
    $loader->register();

当我运行php app/console它时,它会显示错误:

PHP Notice:  Undefined variable: loader in /var/www/~/app/autoload.php on line 6
PHP Fatal error:  Call to a member function registerNamespaces() on a non-object in /var/www/~/app/autoload.php on line 6

其中“~”是我的项目名称。

请帮我解决这个问题。

4

1 回答 1

2

考虑到您拥有 2.1 或更高版本,不再需要此功能。第三方包应该通过 composer 安装,它将负责自动加载。仅 2.0 版本需要此步骤,因为它们使用 symfony 创建的旧供应商脚本。

如果您出于某种原因仍需要注册一些命名空间,则应在composer.json文件中执行此操作:

{
    ...
    "autoload": {
        "psr-0": {
            "My\\Namespace": "path/to/me"
        }
    }
}

更多信息: http: //getcomposer.org/doc/04-schema.md#psr-0

于 2013-07-08T21:42:48.253 回答