ojreadmore
ojreadmore

Reputation: 1475

Symfony Autoload Namespace Difficulties

I'm trying to autoload a class within symfony 2. The class lives in vendor/lessc/lessc.inc.php It's not loading saying the lessc class is not found. What am I doing wrong?

From app/autoloader.php

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

From lessc.inc.php

namespace Less;
class lessc { 
  //..
}

From vendor/assetic/src/Assetic/Filter/LessphpFilter.php which calls the lessc class.

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

Edit: Solution based on advice I got:

Class path = vendor/Less/lessc.php

vendor/Less/lessc.php

namespace Less;
class lessc {

vendor/assetic/src/Assetic/Filter/LessphpFilter.php is the same as above.

within a twig template

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

app/autoloader.php

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

Upvotes: 1

Views: 2547

Answers (2)

Faizal Pribadi
Faizal Pribadi

Reputation: 1

Your Name Of Classes is Lessc

If You Root Folder Less:

Add Classes Name In Root Namespace Folder 

Example:

use Less\Lessc;

use Less\Lessc as rootClassesOfNamespaces;

Upvotes: 0

alghimo
alghimo

Reputation: 2899

I think that your class named "lessc" should be in a file named "lessc.php", you should change this line:

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

for this one:

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

You should change the name of the "lessc" dir for "Lessc". Besides, you should move your assetic filter inside your "Less" namespace.

I hope it helped!

Upvotes: 2

Related Questions