繁体   English   中英

ParamConverter:声明异常symfony2

[英]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.

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