php 8.2中如何定义返回对象数组的函数的返回类型[duplicate]

zc0qhyus  于 2023-03-11  发布在  PHP
关注(0)|答案(2)|浏览(147)

此问题在此处已有答案

Is there a type hint for an array of objects of a specific class in PHP 8.1?(2个答案)
昨天关门了。
例如,我开发了一个API,我必须输入我所有的函数,我有一个函数返回一个运动列表,那么如何定义我的函数的返回类型呢?我试着这样做:public function getAllMovements() : Movement[] {}但是它不起作用,我用laravel 10工作。

uinbv5nw

uinbv5nw1#

如果你只想在文档中使用它,phpdoc支持它,如下所示:

/**
 * @return Movement[]
 */

否则,我认为您应该自己创建一个强类型集合,例如回答如下:https://stackoverflow.com/a/73738459/3090890

class MovementCollection extends ArrayObject
{
    public function __construct(array $items = [])
    {
        foreach ($items as $item) {
            $this->validate($item)
        }
    }
    ...

在API中,构建这样的类型化集合并不罕见。

pgpifvop

pgpifvop2#

我已定义了返回移动集合的移动资源

class MovementResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

在我的函数中,我已经将资源定义为返回类型,并且一切都正常工作

public function getAllMouvements() : MovementResource {}

这样我们就可以确定返回类型将是一个移动的集合。

相关问题