【问题标题】:Use variable on calling a method PHP在调用 PHP 方法时使用变量
【发布时间】:2018-02-22 12:32:13
【问题描述】:


我们如何在调用时在类名中使用变量?
例如,我有一个这样的类:

<?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);

【问题讨论】:

  • 为什么要这样称呼它?
  • @Andrew 我想为一个库创建一个简单的 api。并使用 $_GET[]; 获取变量
  • 你知道 Instagram 今年会弃用他们的 API,对吧? instagram.com/developer
  • 我明白了。这种方法有点混乱并且很容易出错(如果你传递一个在 api 中不作为函数存在的参数会发生什么)。对于预先确定的功能,您最好使用开关(或 if)。
  • 我猜你会在 7 月份找到答案。

标签: php class methods instagram


【解决方案1】:

方法调用就像您在问题中显示的那样工作。所以这部分代码就OK了:

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

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

最后一个方法的参数呢,有两种选择:

PHP >= 5.6

Variadic parameters 是在 PHP 5.6 中引入的,因此您可以将参数保存为数组,然后使用 ... 传递它们:

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

PHP

在这种情况下,您应该使用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 提供者的架构。

【讨论】:

  • 有任何关于否决票的 cmet 吗?
猜你喜欢
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2017-04-16
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 2016-06-14
相关资源
最近更新 更多