繁体   English   中英

发现Symfony2文件类不在其中

[英]Symfony2 File Found Class Was Not In It

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

我从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

我已经尝试过:

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

非常感谢你提前。

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

from: namespace Priceget\\CollectorBundle\\Crawler\\Amazon;

to: namespace Priceget\\CollectorBundle\\Crawler;

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

除了Igor所说的,如果你想让它工作,你显然必须在服务声明(YML)中更改FQN类名。

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

class FilesRepository extends Doctrine\ORM\EntityRepository

本来应该:

class FilesRepository extends \Doctrine\ORM\EntityRepository

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM