我正在尝试使用PHP对象创建层次结构,以进行编译时错误检查,以确保对象的类型正确。示例:
abstract class ConfigObj {
...
}
abstract class Runner {
public static abstract function buildWithConfig(ConfigObj $config);
}
class SpecificConfig extends ConfigObj {
...
}
class MainRunner extends Runner {
public static function buildWithConfig(SpecificConfig $config){
...
}
}
尝试这样做时,PhpStorm抱怨MainRunner
的{{1}}声明必须与buildWithConfig
类中的该方法兼容,理由是显然Runner
无法填充SpecificConfig
的角色。我可以通过不声明类型来解决此问题,但我宁愿不要这样做,因为它需要额外的处理才能实现相同的类型安全性。
对于Java,使用泛型将很容易使用泛型。我还没有遇到过PHP中的等效功能吗?