【问题标题】:ParamConverter: Declaration exception symfony2ParamConverter:声明异常 symfony2
【发布时间】:2014-08-02 19:37:40
【问题描述】:

我正在尝试为我的项目创建一个参数转换器 (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)

我不明白这个问题......

【问题讨论】:

  • use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; ? ;)
  • 我认为这行不通。实际上他需要:use Sensio\Bundle\FrameworkExtraBundle\Configuration as Sensio 然后在方法签名中使用Sensio\ParamConverter ;)
  • 工作就像一个魅力,谢谢 bartek :)

标签: php symfony


【解决方案1】:

这实际上是预期的行为 :) 看看你的 apply 方法:

public function apply(Request $request, ParamConverter $configuration){
    return true;
}

第二个参数的类型提示为ParamConverter。由于您自己的转换器被准确命名,它假设有一个方法apply,它有一个类型的第二个参数:

namespace Test\ParamConvertersBundle\ProgramConverter\ParamConverter;

....不匹配超类的方法。

解决方案:尝试重命名您自己的类,使其更加具体。

【讨论】:

    【解决方案2】:

    巴特克回答:

    使用 Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;

    非常感谢:)

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2013-11-18
      • 2014-05-06
      • 2013-03-22
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多