未定义的方法registerNamespaces()symfony2

Rei*_*erd 4 symfony fosuserbundle symfony-2.1

我正在关注此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
Run Code Online (Sandbox Code Playgroud)

我的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;
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Md.*_*ain 9

对于symfony 2.*替换它

$loader->add('FOS' => __DIR__.'/../vendor/bundles');
Run Code Online (Sandbox Code Playgroud)

$loader->add('FOS', __DIR__.'/../vendor/bundles');
Run Code Online (Sandbox Code Playgroud)


Cer*_*rad 6

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

尝试重新开始并向您的composer.json添加:"friendsofsymfony/twitter-bundle":"dev-master"并进行安装.这应该打包包装并为您自动加载.

否则,替换:

$loader->registerNamespaces(array('FOS'    => __DIR__.'/../vendor/bundles'));
with
$loader->add('FOS' => __DIR__.'/../vendor/bundles');
Run Code Online (Sandbox Code Playgroud)

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

但是,再次尝试使用composer路由,然后可以向项目提交补丁以更新自述文件.