aro*_*oth 2 php function extend
长话短说我正在使用遗留的代码库,大量使用PHP的内置call_user_func_array函数.我试图让它与PHP 5.3一起工作(从5.2升级),但遇到了这里描述的问题(在"传递非数组"部分):
http://sixohthree.com/1486/migrating-to-php-5-3-call_user_func_array
简而言之,问题是在PHP版本5.2和5.3之间,这个函数的优点已被更改,因此它基本上什么都不做,NULL如果第二个参数不是正确的数组/对象/关联数组则返回.5.2没有这样做,因此我正在使用的代码库不会确保它传递正确类型的参数.这会导致问题.
要修复它,我可以按照博客文章call_user_func_array中的说明搜索代码库中的每一个调用并修补它们,但这将非常繁琐.或者,我注意到PHP有一个内置的override_function API调用,可以用来覆盖内置函数.这很方便,但我想做的更像是扩展内置功能.
理想情况下,我希望能够call_user_func_array用大致类似的东西替换实现:
function call_user_func_array($method, $params) {
$params = is_array($params) ? $params : array($params);
return old_call_user_func_array($method, $params);
}
Run Code Online (Sandbox Code Playgroud)
...... old_call_user_func_array内置call_user_func_array功能在哪里
这是可能的,如果是的话,怎么样?
您可以使用也在APD扩展中的rename_function,因此如果您安装了override_function,则应该已经拥有它:
rename_function('call_user_func_array', 'old_user_func_array');
function call_user_func_array($method, $params) {
$params = is_array($params) ? $params : array($params);
old_call_user_func_array($method, $params);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1640 次 |
| 最近记录: |