我们可以确定php中数组元素的返回类型吗


Can we determine a return type for array elements in php?

是否可以确定函数中返回数组的元素类型?

例如,如果元素应该是浮动的:

class test{
    /**
     * This should return an array containing float values,
     * but I get a fatal error instead
     */
    public static function doStuff() : float[] {
        return [ 10.3, 12.8 ];
    }
}

不幸的是,您不能像那样键入检查数组的内容。

如果你真的坚持这样做,你可以创建自己的集合类,它包裹在数组周围,并确保其元素的类型:

class FloatCollection
{
    private $array = [];
    public function __construct($array = [])
    {
        foreach ($array as $value) {
            $this->add($value);
        }
    }
    public function add(float $value)
    {
        $this->array[] = $value;
    }
    ...
}

然后你可以键入检查:

public static function doStuff() : FloatCollection
{
    return new FloatCollection([10.3, 12.8]);
}

但对于你想要实现的目标来说,这可能是很多不必要的工作。