在调用方法时使用变量 PHP

Use variable on calling a method PHP


我们如何在 classes name on call 中使用变量?
例如我有一个 class 是这样调用的:

<?php
$ig = new Instagram();
$ig->people->getIdByName("param1",array('a','b','c'),"param2");

那么我该如何调用这个方法呢?:

<?php
 $ig = new Instagram();

 $main = 'people';
 $sub = 'getIdByName';
 $content = '"param1",array('a','b','c'),"param2"';

 $ig->$main->$sub($content);

方法调用会像您在问题中展示的那样工作。所以这部分代码是可以的:

$main = 'people';
$sub = 'getIdByName';

$ig->$main->$sub();

最后一个方法的参数呢,有2个选项:

PHP >= 5.6

Variadic parameters 是在 PHP 5.6 中引入的,因此您可以将参数保存为数组,并通过 ...:

传递它们
$args = ["param1",['a','b','c'],"param2"];
$ig->$main->$sub(...$args);

PHP < 5.6

在这种情况下,您应该使用 call_user_func_array()

$main = 'people';
$sub = 'getIdByName';
$args = ["param1",['a','b','c'],"param2"];

$main = $ig->$main;
call_user_func_array([$main, $sub], $args];

虽然@Andrew 是对的,但这种方法不灵活,不能用作 API 提供商的架构。