php - 如何在 php 7.1 中指示返回类型是当前子类型?

标签 php php-7 type-hinting php-7.1 late-static-binding

我有

abstract class A{
  public static function getSingle($where = []) {
    $classname = get_called_class();

    $record =     static::turnTheWhereIntoArecordFromDB($where);
    $model = new  $classname($record);
    return $model;
  }
}

class B extends A{

}


$x = B::getSingle();

$x 没有类型提示... 我喜欢类型提示,所以我想要 B 的类型提示,而不是 A

如何直接为$x启用类型提示?

我以为是这样的

 public function getSingle($where = []) : ?get_called_class()

这显然行不通

有什么可以做的吗?

最佳答案

对于您提供的示例,为什么需要工厂方法?您正在从构造函数创建一个新实例,为什么不直接 $x = new B($record)!

以上更新


abstract class A
{
    /**
     * @param array $where
     * @return static
     */
    public static function getSingle($where = [])
    {
        $classname = get_called_class();

        $model = new  $classname($record);
        return $model;
    }
}

@return static 将类型提示其子类。另外我把你的函数改成了静态函数,这是典型的工厂模式。

关于php - 如何在 php 7.1 中指示返回类型是当前子类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368880/

相关文章:

php - 帖子内容中的目标图像

php - 如何从 PDF 或各种其他文档文件创建缩略图?

php - 识别 PHP 内部类和用户定义类

python - pylint 为可调用的对象属性给出不可调用的错误

PHP:如何获取过去特定日期的前一个星期日..?

php - 在 PHP 中将数组传递给函数而不是单独的值的缺点

PHP 三元运算符与空合并运算符

php - 在 php laravel 中运行原始 sql

Python类型提示——为dict子类指定key、value类型

python - 字段类型取决于其他字段的类型