[英]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
我已经尝试过:
非常感谢你提前。
你的命名空间是错误的,重命名它:
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.