在调用方法时使用变量 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 提供商的架构。
我们如何在 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 提供商的架构。