Symfony Autoload Пространство имен Сложности - PullRequest
1 голос
/ 22 января 2012

Я пытаюсь автоматически загрузить класс в Symfony 2. Класс живет в vendor/lessc/lessc.inc.php Он не загружается, говоря, что класс lessc не найден. Что я делаю неправильно?

Из app / autoloader.php

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

С lessc.inc.php

namespace Less;
class lessc { 
  //..
}

От vendor /assetic / src / Assetic / Filter / 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

производитель / Less / lessc.php

namespace Less;
class lessc {

vendor /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 ]

2 голосов
/ 22 января 2012

Я думаю, что ваш класс с именем "lessc" должен находиться в файле с именем "lessc.php", вы должны изменить эту строку:

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

для этого:

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

Вы должны изменить название "lessc" dir на "Lessc". Кроме того, вы должны переместить свой сборочный фильтр в ваше пространство имен Less.

Надеюсь, это помогло!

0 голосов
/ 18 июля 2012

Ваше имя класса: Lessc

Если вы используете корневую папку Less:

Add Classes Name In Root Namespace Folder 

Пример:

use Less\Lessc;

use Less\Lessc as rootClassesOfNamespaces;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...