泛型函数参数

Generic type function parameter

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

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

我想做的是在 $entity 上有一个类型,它是 Appbundle\Entity 中的 class 之一(可以是任何一个),并让 Symfony 猜测它是哪个.

可能吗?

我认为这与 Symfony 无关,而是与 PHP 的弱类型性质有关。

一种处理方法是让您的函数能够通过 instanceof 检查其类型,但这被认为是一种反模式,因为您每次都需要重新调整此函数决定添加一个需要此类处理的新 class。

可能处理此问题的另一种方法是确定公共接口并让该名称空间中的所有 classes 实现它。这样,在您的 Twig 扩展中,您可以指定接口类型提示。这个的可行性真的取决于你想要实现什么。

希望这能说明一些问题...