类型提示模型数组

RVa*_*een 4 php arrays type-hinting laravel

我想知道您是否可以在 php(更明确地 Laravel)中键入一组模型。

一个代码示例:

use App\User;

public function index(User $user)
{
    // do something with the user
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法对用户模型数组进行类型提示:

use App\User;

public function index(array User $users) //this is wrong ..
{
    // do something with the users
}
Run Code Online (Sandbox Code Playgroud)

Tor*_*sen 8

在 PHP 5.6+ 中,您可以使用可变长度参数列表来实现您想要的。

您在调用函数时解压变量,函数在其签名中使用可变参数。因此,而不是通过一个数组User对象,你解压的arrayCollection 的User对象,所有的人都对你提供typehint检查。

例子:

function deleteUsers(User ...$users)
{
    // delete the users here
}

$users = [$user1, $user2, $user3];

deleteUsers(...$users);
Run Code Online (Sandbox Code Playgroud)

解包既适用于常规对象,也适用array于 LaravelCollection对象,或任何其他Traversable变量或文字,以输入参数列表。

这相当于执行以下操作:

deleteUsers($user1, $user2, $user3);
Run Code Online (Sandbox Code Playgroud)