5

这是我的第一个问题,除了我不是以英语为母语的人之外,对于新手的错误,请提前道歉......

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

在我的 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

我已经尝试过:

  • 空缓存
  • 重启阿帕奇
  • 将类扩展到控制器?:-Z

非常感谢你。

4

4 回答 4

12

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

从:namespace Priceget\CollectorBundle\Crawler\Amazon;

至:namespace Priceget\CollectorBundle\Crawler;

于 2013-09-29T18:30:38.940 回答
5

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

于 2017-06-21T14:24:45.173 回答
1

除了 Igor 所说的之外,如果您希望它工作,显然您必须更改服务声明 (YML) 中的 FQN 类名称。

于 2013-09-30T09:45:05.797 回答
1

这可能有点误导,如果您没有正确扩展您的课程,也会发生这种情况。在我的实例中,我尝试使用不正确的 FQN 扩展存储库:

class FilesRepository extends Doctrine\ORM\EntityRepository

本来应该:

class FilesRepository extends \Doctrine\ORM\EntityRepository

注意缺少的反斜杠 ( \)。

于 2017-08-08T18:24:34.537 回答