2012-01-22 39 views
1

我试图自动加载symfony 2中的一个类。该类生活在vendor/lessc/lessc.inc.php它没有加载说找不到lessc类。我究竟做错了什么?Symfony Autoload命名空间问题难度

应用程序/ autoloader.php

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

lessc.inc.php

namespace Less; 
class lessc { 
    //.. 
} 

供应商/ assetic/SRC/Assetic /过滤/ LessphpFilter.php其中调用lessc类。

namespace Assetic\Filter; 
use Assetic\Asset\AssetInterface; 
use Less; 
//... 
class LessphpFilter implements FilterInterface 
{ 
    public function filterLoad(AssetInterface $asset) 
    { 
     //... 
     $lc = new Less\lessc(); 

编辑:解决方案基础上的建议我:

类路径= vendor/Less/lessc.php

供应商/更少/ lessc.php

namespace Less; 
class lessc { 

供应商/ assetic /src/Assetic/Filter/LessphpFilter.php与上面相同。

树枝模板内

{% stylesheets 
    '@MyBundle/Resources/public/less/styles.less' 
    filter='lessphp' 
%} 
    <link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

应用程序/ autoloader.php

'Less' => __DIR__.'/../vendor' 

回答

2

我认为你的类名为 “lessc” 应该是在一个名为“lessc.php “,你应该改变这一行:

'Less'    => __DIR__.'/../vendor/lessc' 

这一个:

'Less'    => __DIR__.'/../vendor' 

你应该改变“Lessc”中的“lessc”目录的名称。 此外,您应该将您的资产过滤器移入“Less”命名空间中。

我希望它有帮助!

+0

如果它仍然无法正常工作,你可以尝试使用更少\ lessc;而不是使用Less; – Nanocom

+0

感谢帮助人们,我提出了最终的解决方案。 – ojreadmore

0

您的姓名类是Lessc

如果您根文件夹Less

Add Classes Name In Root Namespace Folder 

例子:

use Less\Lessc; 

use Less\Lessc as rootClassesOfNamespaces;