1
更改方法签名以在PHP中实现类
有没有关于PHP缺少泛型的体面工作,这些泛型允许静态代码检查以检测类型一致性? 我有一个抽象类,我想对其进行子类化,并且还强制其中一种方法从采用一种类型的参数更改为采用作为该参数的子类的参数。 abstract class AbstractProcessor { abstract function processItem(Item $item); } class WoodProcessor extends AbstractProcessor { function processItem(WoodItem $item){} } PHP不允许这样做,因为它正在更改不允许的方法签名。使用Java样式泛型,您可以执行以下操作: abstract class AbstractProcessor<T> { abstract function processItem(T $item); } class WoodProcessor extends AbstractProcessor<WoodItem> { function processItem(WoodItem $item); } 但是很明显,PHP不支持这些功能。 谷歌针对这个问题,人们建议使用instanceof在运行时检查错误,例如 class WoodProcessor extends AbstractProcessor { function processItem(Item $item){ if …