fix(php): 修复子类作为父类返回时的类型检查逻辑

- 添加了对 objectClass 是否存在的检查,避免空值导致的错误
- 改进了错误消息,明确显示具体的子类和父类名称
- 确保只有在 objectClass 存在且不等于 returnClass 时才进行抽象类验证
pull/1/head
韩天峰 4 months ago
parent b6645e90ce
commit 76ed488b75
  1. 4
      src/Php/CompilerBase.php

@ -1801,8 +1801,8 @@ class CompilerBase extends \PhpAot\Core\Translator
$this->fatalError($v, 'The return type is `' . $returnClass . '`, cannot return an instance of `' . $objectClass . '`');
}
// 把子类当做父类返回时,父类必须是抽象类
if ($objectClass !== $returnClass and !$this->isAbstractClass($returnClass)) {
$this->fatalError($v, 'When returning a subclass instance as its parent type, the parent class must be abstract');
if ($objectClass and $objectClass !== $returnClass and !$this->isAbstractClass($returnClass)) {
$this->fatalError($v, "When returning a subclass `$objectClass` instance as parent type, the parent class `$returnClass` must be abstract");
}
}

Loading…
Cancel
Save