这是我的第一个问题,除了我不是英语母语者,所以提前抱歉新手错误......
我从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
我已经尝试过:
提前非常感谢你。
答案 0 :(得分:11)
您的命名空间错误,请重命名:
来自:namespace Priceget\CollectorBundle\Crawler\Amazon;
至:namespace Priceget\CollectorBundle\Crawler;
答案 1 :(得分:5)
如果您未将<?php
放在文件的开头,也会发生此错误。
答案 2 :(得分:1)
除了Igor所说的,如果你想让它工作,你显然必须在服务声明(YML)中更改FQN类名。
答案 3 :(得分:1)
这可能有点误导,如果你没有正确地扩展你的课程,也会发生这种情况。在我的实例中,我尝试使用不正确的FQN扩展存储库:
let locations = [
["title": "New York, NY", "latitude": 40.713054, "longitude": -74.007228],
["title": "Los Angeles, CA", "latitude": 34.052238, "longitude": -118.243344],
["title": "Chicago, IL", "latitude": 41.883229, "longitude": -87.632398]
]
for location in locations {
let annotation = MKPointAnnotation()
annotation.title = location["title"] as? String
annotation.coordinate = CLLocationCoordinate2D(latitude: location["latitude"] as! Double, longitude: location["longitude"] as! Double)
mapView.addAnnotation(annotation)
}
应该是:
class FilesRepository extends Doctrine\ORM\EntityRepository
注意缺少反斜杠(class FilesRepository extends \Doctrine\ORM\EntityRepository
)。