簡體   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