gpt4 book ai didi

php - 在构造函数中动态调用具有可变数量参数的类

转载 作者:IT王子 更新时间:2023-10-29 00:19:27 26 4
gpt4 key购买 nike

我知道可以使用此处找到的 call_user_func_array() 调用具有可变数量参数的函数 -> http://php.net/manual/en/function.call-user-func-array.php .我想要做的几乎相同,但我想调用一个 PHP 类,而不是一个函数,它的构造函数中有可变数量的参数。

它会像下面这样工作,但我不知道参数的数量,所以我不知道如何实例化该类。

<?php
//The class name will be pulled dynamically from another source
$myClass = '\Some\Dynamically\Generated\Class';
//The parameters will also be pulled from another source, for simplicity I
//have used two parameters. There could be 0, 1, 2, N, ... parameters
$myParameters = array ('dynamicparam1', 'dynamicparam2');
//The instantiated class needs to be called with 0, 1, 2, N, ... parameters
//not just two parameters.
$myClassInstance = new $myClass($myParameters[0], $myParameters[1]);

最佳答案

您可以使用 ReflectionClass 执行以下操作

$myClass = '\Some\Dynamically\Generated\a';
$myParameters = array ('dynamicparam1', 'dynamicparam2');

$reflection = new \ReflectionClass($myClass);
$myClassInstance = $reflection->newInstanceArgs($myParameters);

PHP 手册:http://www.php.net/manual/en/reflectionclass.newinstanceargs.php

编辑:

在 php 5.6 中,您可以使用 Argument unpacking 实现此目的.

$myClass = '\Some\Dynamically\Generated\a';
$myParameters = ['dynamicparam1', 'dynamicparam2'];

$myClassInstance = new $myClass(...$myParameters);

关于php - 在构造函数中动态调用具有可变数量参数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com