Guzzle注释不能与Symfony2项目中的Doctrine2注释解析器一起使用

时间:2012-07-17 11:20:51

标签: php symfony doctrine

我有一个Symfony2项目,我正在尝试集成GuzzleBundle来构建一个Web服务客户端。我正在为客户端命令(扩展@guzzle)使用Guzzle\Service\Command\AbstractCommand注释。

它似乎在开发环境中正常工作,但当我尝试使用prod环境加载页面时,我得到一个Doctrine AnnotationException

 PHP Fatal error:  Uncaught exception 'Doctrine\Common\Annotations\AnnotationException' with message '[Semantical Error] The annotation "@guzzle" in class Admin\FindAnExpertBundle\Entity\SymplecticClient\Rest\Command\UserById was never imported. Did you maybe forget to add a "use" statement for this annotation?'

我还收到有关缺少Proxy类文件的错误:

PHP Warning:  require(/home/httpd/sites/experts.admin/app/cache/prod/doctrine/orm/Proxies/AdminFindAnExpertBundleEntityRelationshipTypeProxy.php) [<a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in /home/httpd/sites/experts.admin/vendor/doctrine/lib/Doctrine/ORM/Proxy/ProxyFactory.php

我认为这是因为致命错误阻止了所有代理类的创建。

Guzzle似乎没有使用Doctrine注释解析器,所以我想知道是否有办法让它忽略@guzzle注释或以某种方式注册它们?

2 个答案:

答案 0 :(得分:0)

你必须导入Gunotation的解析 - 解析器,它处理“@guzzle”注释,例如:

use Guzzle\Service\Inspector as guzzle;

但我不知道它是哪一堂课。

也许this gist file会帮助你。

答案 1 :(得分:0)

我最终将与Web服务客户端相关的类移出Entity文件夹,这阻止了Doctrine注释解析器读取它们。回想起来,无论如何这些课程都不应该在那个文件夹中。