泛型函数参数

时间:2018-09-27 18:31:46

标签: php symfony doctrine-orm symfony-3.4

我正在制作一个新的Twig扩展名。
该Twig扩展接受实体对象(\AppBundle\Entity\*)和参数名称作为参数。

public function filterNameFilter($entity, $parameter) {}

我想做的是在$entity上键入一个类型,该类型将是Appbundle\Entity中的类之一(可以是任何一种),并让Symfony猜测是哪个类型。

有可能吗?

1 个答案:

答案 0 :(得分:1)

我相信这与Symfony无关,而是与PHP的弱类型性有关。

一种处理方法是让函数能够通过instanceof检查其类型,但是由于每次您都需要重新调整该函数的事实,因此将其视为反模式。添加一个需要此类处理的新类。

另一种可能解决此问题的方法是识别通用接口,并让该命名空间中的所有类都实现它。这样,您可以在Twig扩展名中指定接口类型提示。可行性是否取决于您要实现的目标。

希望这能为您提供一些启示...