发现Symfony2文件类不在其中

man*_*uer 5 php service autoload symfony

这是我的第一个问题,除了我不是英语母语人士,所以提前抱歉新手错误......

我从Symfony2开始,我已经面临一个自动加载问题,我已经疯了......

我只是想在我的AppBundle的DefaultController中使用PHP类.我已经读过这样做的方法是在我的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');
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的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');
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的config.yml片段:

services:
    amazon.crawler:
        class: Priceget\CollectorBundle\Crawler\Amazon
Run Code Online (Sandbox Code Playgroud)

我已经尝试过:

  • 空缓存
  • 重启apache
  • 将类扩展到Controller?:-Z

非常感谢你提前.

Igo*_*vić 11

你的命名空间是错误的,重命名它:

从: namespace Priceget\CollectorBundle\Crawler\Amazon;

至: namespace Priceget\CollectorBundle\Crawler;

  • 缺少php开启标记也可能导致此错误. (3认同)

Ant*_*eev 5

如果您不放入<?php文件的开头也会发生此错误.