由于PHP call_user_method()和call_user_method_array()被标记为已弃用,我想知道推荐的替代方案是什么?
一种方法是使用call_user_func(),因为通过给出一个带有对象的数组和一个方法名作为第一个参数,就像弃用的函数一样.由于此功能未标记为已弃用,我认为原因不是非OOP时尚的使用方法吗?
我能想到的另一种方法是使用Reflection API,它可能是最舒适且面向未来的替代方案.不过它是更多的代码,我可以想象它比使用上面提到的函数慢.
我感兴趣的是:
Pao*_*ino 26
如你所说,call_user_func可以轻松复制此功能的行为.有什么问题?
该call_user_method页面甚至将其列为替代方案:
<?php
call_user_func(array($obj, $method_name), $parameter /* , ... */);
call_user_func(array(&$obj, $method_name), $parameter /* , ... */); // PHP 4
?>
至于为什么这个被弃用,这篇文章解释了它:
这是因为
call_user_method()和call_user_method_array()函数可以很容易地通过以下方式复制:旧方式:
call_user_method($func, $obj, "method", "args", "go", "here");新方法:
call_user_func(array(&$obj, "method"), "method", "args", "go", "here");
就个人而言,我可能会考虑Chad发布的变量建议.
Cha*_*rch 17
你可以使用变量变量来做到这一点,这看起来对我来说最干净.代替:
call_user_func(array($obj, $method_name), $parameter);
你做:
$obj->{$method_name}($parameter);
| 归档时间: | 
 | 
| 查看次数: | 13163 次 | 
| 最近记录: |