与PHP7和PHP5的变量函数兼容性
我的情况是,这在PHP5中起作用,但在PHP7中起作用:与PHP7和PHP5的变量函数兼容性,php,php-7,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
/* 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\u user\u func()
:
你能提出它作为回答吗?在上述情况下,$args不是私有或静态变量。但是在$args['method']中有一个函数名存在于调用类中(self::),第二个代码应该可以在PHP5和PHP7上使用。请确保您没有在一些过时的PHP版本(如5.3)上进行测试。作为WordPress插件开发人员,我负担不起这种环境,我将看到PHP版本从5.3到7。第二个版本将在PHP的较低版本上致命。它不喜欢括号。
call_user_func(
array($this, $args['method']),
$args
);