与 PHP 7 和 PHP5 的可变函数兼容性
Variable function compatibility with PHP 7 and PHP5
我有这样一种情况,它在 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 所以我不能走那条路。
我该怎么办?
将其分配给一个不会导致语法错误的常规变量:
$method = $args['method'];
$this->$method($args);
或者,与评论中的建议类似,使用 call_user_func()
:
call_user_func(
array($this, $args['method']),
$args
);
我有这样一种情况,它在 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 所以我不能走那条路。
我该怎么办?
将其分配给一个不会导致语法错误的常规变量:
$method = $args['method'];
$this->$method($args);
或者,与评论中的建议类似,使用 call_user_func()
:
call_user_func(
array($this, $args['method']),
$args
);