Это мой первый вопрос, к тому же я не носитель английского языка, поэтому извините заранее за ошибки новичка …
Я начинаю с 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
Я уже пытался:
Огромное спасибо заранее.
Ваше пространство имен неверно, переименуйте его:
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
Обратите внимание на недостающую обратную косую черту ( \
).