Symfony2 File Found Class Was Not In It

27,596

Solution 1

Your namespace is wrong, rename it:

from: namespace Priceget\CollectorBundle\Crawler\Amazon;

to: namespace Priceget\CollectorBundle\Crawler;

Solution 2

This error also occurs if you do not put <?php in the beginning of the file.

Solution 3

In addition to what's said by Igor, you obviously have to change the FQN class name in the service declaration (YML) if you want it to work.

Solution 4

This can be a bit misleading, it also happens if you don't extend your class correctly. In my instance I tried to extend a repository with an incorrect FQN:

class FilesRepository extends Doctrine\ORM\EntityRepository

should have been:

class FilesRepository extends \Doctrine\ORM\EntityRepository

Notice the missing backslash (\).

Share:
27,596
manelescuer
Author by

manelescuer

NodeJS dev, ♥️passionate entrepreneur, SEO lover &amp; traffic generator padawan

Updated on July 09, 2022

Comments

  • manelescuer
    manelescuer almost 2 years

    This is my first question, besides I'm not english-native speaker, so sorry in advance for newbie mistakes...

    I'm starting with Symfony2, and I've been facing an autoload problem for a couple of days, i'm getting crazy..

    I'm just trying to use a PHP class inside my DefaultController of my AppBundle. I've read the way of doing this is by creating a service in my config.yml and giving a namespace to that class that matches.

    Symfony tells me that it does found the file but the class is not in it, the exact error is:

    The autoloader expected class "Priceget\CollectorBundle\Crawler\Amazon" to be defined in file "/srv/www/lol.com/public_html/priceget/symfony/src/Priceget/CollectorBundle/Crawler/Amazon.php". The file was found but the class was not in it, the class name or namespace probably has a typo.

    And my class is just this:

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

    In my DefaultController I'm calling it like that:

    <?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');
        }
    }
    

    And my config.yml piece:

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

    I've already tried to:

    • Empty cache
    • Restart apache
    • Extend the class to Controller? :-Z

    Thank you so much in advance.