Symfony2 File Found Class не был в нем

Это мой первый вопрос, к тому же я не носитель английского языка, поэтому извините заранее за ошибки новичка …

Я начинаю с Symfony2, и я столкнулся с проблемой автозагрузки на пару дней, я с ума сошел.

Я просто пытаюсь использовать класс PHP внутри моего DefaultController моего AppBundle. Я прочел способ сделать это, создав службу в моем config.yml и предоставив пространство имен этому классу, который соответствует.

Symfony говорит мне, что он нашел файл, но класс не в нем, точная ошибка:

Автозагрузчик ожидает, что класс «Priceget \ CollectorBundle \ Crawler \ Amazon» будет определен в файле «/srv/www/lol.com/public_html/priceget/symfony/src/Priceget/CollectorBundle/Crawler/Amazon.php». Файл был найден, но класс не был в нем, имя класса или пространство имен, вероятно, имеет опечатку.

И мой класс:

<?php namespace Priceget\CollectorBundle\Crawler\Amazon; use Symfony\Component\HttpFoundation\Response; class Amazon { public function getAll() { return new Response('l0l'); } } 

В моем DefaultController я называю это следующим:

 <?php namespace Priceget\CollectorBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Guzzle\Http\Client; use Symfony\Component\DomCrawler\Crawler; use Priceget\CollectorBundle\Crawler\Amazon; class DefaultController extends Controller { public function indexAction() { $amazon = $this->get('amazon.crawler'); } } 

И моя часть config.yml:

 services: amazon.crawler: class: Priceget\CollectorBundle\Crawler\Amazon 

Я уже пытался:

  • Пустой кеш
  • Перезапустить apache
  • Расширить класс до контроллера? : -Z

Огромное спасибо заранее.

Ваше пространство имен неверно, переименуйте его:

from: namespace Priceget\CollectorBundle\Crawler\Amazon;

to: namespace Priceget\CollectorBundle\Crawler;

Эта ошибка также возникает, если вы не поместите <?php в начало файла.

В дополнение к тому, что сказал Игорь, вы, очевидно, должны изменить имя класса FQN в объявлении сервиса (YML), если хотите, чтобы он работал.

Это может быть немного вводить в заблуждение, это также происходит, если вы не расширяете свой класс правильно. В моем примере я попытался распространить репозиторий на неверный FQN:

 class FilesRepository extends Doctrine\ORM\EntityRepository 

должно было:

 class FilesRepository extends \Doctrine\ORM\EntityRepository 

Обратите внимание на недостающую обратную косую черту ( \ ).