Параметр функции общего типа - PullRequest
0 голосов
/ 27 сентября 2018

В настоящее время я делаю новое расширение Twig.
Это расширение Twig принимает в качестве параметра объектный объект (\AppBundle\Entity\*) и имя параметра.

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

То, что я хотел бы сделать, это иметьтип на $entity, который будет одним из классов в Appbundle\Entity (может быть любым), и Symfony угадывает, какой это.

Возможно ли это?

1 Ответ

0 голосов
/ 27 сентября 2018

Я полагаю, что это не что-то, связанное с Symfony, а скорее со слабой типизированной природой PHP.

Один из способов справиться с этим - позволить вашей функции проверять ее тип через instanceof, но это считается анти-паттерном из-за того, что вам нужно перенастраивать эту функцию каждый раз, когда вы решаете добавить новый класс, который требует такого типа обработки.

Еще один способ справиться с этим - определить общий интерфейс и реализовать все ваши классы в этом пространстве имен.Таким образом, в вашем расширении Twig вы можете указать подсказку типа интерфейса.Осуществимость этого действительно зависит от того, чего вы хотите достичь.

Надеюсь, что это проливает некоторый свет ...

...