外部类不在symfony2.0项目中自动加载

时间:2012-11-27 16:12:58

标签: symfony symfony-2.0

我想将 EasyCSV 添加到我的symfony2项目https://github.com/jwage/EasyCSV

这就是我尝试过的。我添加了

'EasyCSV'          => __DIR__.'/../vendor/easy-csv',

到autoload.php和

use EasyCSV\Reader;

在我想要使用此lib的控制器中。但是我得到了

  

致命错误:在...... Controller.php中找不到类'EasyCSV \ Reader'

任何想法为什么?如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

进入vendor/composer/autoload_classmap.php(Symfony 2.1)

<?php

// autoload_classmap.php generated by Composer

$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

return array(
    'EasyCSV' => __DIR__.'/../vendor/easy-csv',
    [....]
);

然后您只需插入

就可以使用它
use EasyCSV

您所需文件的“顶部”。

没有作曲家解决方案

在您的autoload.php文件中尝试此操作(我猜想在底部)

use Symfony\Component\ClassLoader\MapClassLoader;
[...]
// Create map autoloader
$mapLoader = new MapClassLoader(array(
    'EasyCSV' => __DIR__.'/../vendor/easy-csv',
    [...]
));

// Register autoloader
$mapLoader->register();

答案 1 :(得分:1)

正如我们在评论中所讨论的那样,请确保您不要手动将第三方库添加到供应商文件中。内置的symfony包管理系统是有原因的。

对于相关捆绑包,您应将以下内容添加到deps文件中。

[easy-csv]
    git=http://github.com/jwage/EasyCSV.git

然后,您应该将以下内容添加到app/autoload.php

$loader->registerNamespaces(array(
    ...
    'EasyCSV'          => __DIR__.'/../vendor/easy-csv/lib',
));

现在您应该可以导入命名空间并使用它。