[英]ParamConverter: Declaration exception symfony2
我正在尝试为我的项目(symfony 2.4)创建一个参数转换器。这是我的转换器:
namespace Test\ParamConvertersBundle\ProgramConverter;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface;
use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManager;
class ProgramConverter implements ParamConverterInterface{
protected $class;
protected $repository;
public function __construct($class, EntityManager $em){
$this->class = $class;
$this->repository = $em->getRepository($class);
}
public function apply(Request $request, ParamConverter $configuration){
return true;
}
public function supports(ParamConverter $configuration){
return $this->class === $configuration->getClass();
}
}
这是使我发疯的异常:
FatalErrorException:编译错误:Test \\ ParamConvertersBundle \\ ProgramConverter \\ ProgramConverter :: apply()的声明必须与Sensio \\ Bundle \\ FrameworkExtraBundle \\ Request \\ ParamConverter \\ ParamConverterInterface :: apply(Symfony \\ Component \\ HttpFoundation \\ Request $ request,Sensio Bundle \\ FrameworkExtraBundle \\ Configuration \\ ParamConverter $ configuration)
我没有问题....
由Bartek回答:
使用Sensio \\ Bundle \\ FrameworkExtraBundle \\ Configuration \\ ParamConverter;
多谢 :)
这实际上是预期的行为:)看看您的apply
方法:
public function apply(Request $request, ParamConverter $configuration){
return true;
}
第二个参数类型为ParamConverter
。 由于您自己的转换器的准确命名是假定它存在一个apply
方法,该方法具有第二个类型的参数:
namespace Test\ParamConvertersBundle\ProgramConverter\ParamConverter;
....与超级类的方法不匹配。
解决方案:尝试重命名自己的班级,使其更加具体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.