与PHP 7和PHP5的可变函数兼容性

时间:2016-03-26 19:47:15

标签: php php-7

我有一种情况,这种情况在PHP5中起作用,但在PHP7中是致命的:

/* load batch processing data into variable */
$args = get_option('leads_batch_processing');
/* process batches */
self::$args['method']($args);

这适用于PHP7,但致命PHP5:

/* load batch processing data into variable */
$args = get_option('leads_batch_processing');
/* process batches */
 self::{$args['method']}($args);

如何在两种PHP环境中成功使用变量函数?我尝试使用基于PHP版本的if条件,但PHP7版本的语法致命PHP5,所以我不能走那条路。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

将其分配给常规变量,这不会导致语法错误:

$method = $args['method'];
$this->$method($args);

或者,与评论中建议的内容类似,使用call_user_func()

call_user_func(
    array($this, $args['method']),
    $args
);