php - 将多个类型提示对象动态传递到 PHP 7 中类的构造函数中

标签 php php-7

假设我在类的构造函数中将一系列值类型提示到接口(interface):

<?php

use Interfaces\Item;

class MyClass
{
    public function __construct(Item ...$items)
    {
        // Do stuff
    }
}

我可以很容易地手动传递这些项目:

$myclass = new MyClass($item1, $item2);

但我正在努力让它更动态地工作 - 以下内容不起作用,因为它希望接收 Item 的多个实例而不是一个数组,因此它引发了 TypeError :

$items = [
    $item1,
    $item2
];
$myclass = new MyClass($items);

我想不出一种方法来动态构建我想在构建新类时传递的项目而不更改它以期望数组,我宁愿不这样做,因为类型提示显然会捕获传递的任何对象通过那不应该。任何人都可以看到我如何实现这一目标吗?

最佳答案

splat 运算符 (...) 有两种工作方式 - 您可以像已有的那样在函数定义中使用它,但您也可以使用它来将项目数组解包到函数参数中.

尝试:

$myclass = new MyClass(...$items);

参见 https://eval.in/927133一个完整的例子

关于php - 将多个类型提示对象动态传递到 PHP 7 中类的构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010369/

相关文章:

php - 使用 implode 函数在表格的一列中插入多个复选框

php - 如何诊断在 Apache 上运行的 SilverStripe 中的文件上传失败

php - 插入数据库的日期时间继续显示 1970-01-01 01 :00:00 instead of inserted values

elasticsearch - 在群集中找不到事件的节点

php - php中的下拉框从mysqli数据库获取部分值

php - 如果条件为空,则 SQL WHERE 子句返回 ALL

mysql - Drupal 无法连接到 macOS Sierra 中的数据库?

symfony - PHP 7 与 Doctrine MongoDB ODM

PHP7 : Methods with a scalar type declaration refuse to type juggle NULL values, 即使在弱/强制模式下

php - 如何为 wordpress 主题制作右侧边栏