未定义的方法registerNamespaces()symfony2

时间:2013-03-07 21:38:30

标签: symfony symfony-2.1 fosuserbundle

我正在关注此FOSTwitterBundle文档: https://github.com/FriendsOfSymfony/FOSTwitterBundle

我是一步一步完成的,但是当我访问我的网站时,我收到了这个错误:

 Fatal error: Call to undefined method Composer\Autoload\ClassLoader::registerNamespaces() in C:\xampp\htdocs\Symfony\app\autoload.php on line 16

我的autoload.php是这样的:

<?php

use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = require __DIR__.'/../vendor/autoload.php';

// intl
if (!function_exists('intl_get_error_code')) {
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
}

AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

$loader->registerNamespaces(array(
        // ...
        'FOS'    => __DIR__.'/../vendor/bundles',
        // ...
  ));

return $loader;

我该怎么办?

3 个答案:

答案 0 :(得分:9)

对于symfony 2. * 替换这个

$loader->add('FOS' => __DIR__.'/../vendor/bundles');

$loader->add('FOS', __DIR__.'/../vendor/bundles');

答案 1 :(得分:6)

基本问题是安装说明适用于Symfony 2.0。您正在使用S2.1。我没有在推特包中探索过。很难说它是否会在2.1下运行。通过git子模块而不是使用composer安装它似乎很奇怪。

尝试重新开始并添加:&#34; friendsofsymfony / twitter-bundle&#34;:&#34; dev-master&#34;到你的composer.json并进行安装。这应该会打包,并为您自动加载。

否则,请替换:

$loader->registerNamespaces(array('FOS'    => __DIR__.'/../vendor/bundles'));
with
$loader->add('FOS' => __DIR__.'/../vendor/bundles');

S2.1使用与S2.0不同的类加载器,具有不同的接口。它至少会让你通过错误信息。

但是,再次尝试编写者路线,然后可以向项目提交补丁以更新自述文件。

答案 2 :(得分:0)

OAuth的? 不久前我用https://github.com/hwi/HWIOAuthBundle。 如何与FOSUB集成:https://github.com/hwi/HWIOAuthBundle/issues/81