Tod*_*odd 1 php legacy static-methods dynamic-class
我正在使用php 5.2.6处理遗留代码库的项目.该项目的一部分涉及类似于使用一个PHP类与另一个PHP类的A/B测试.这两个类具有许多相同的函数名,具有非常相似的签名,但方法中的方法不同.我想知道是否可以使用基于动态/变量的类名称在类中调用静态方法.
例如,id喜欢将类名设置为:
$class = isset($some_condition) && $some_condition ? 'NewClassName' : 'LegacyClassName';
Run Code Online (Sandbox Code Playgroud)
...然后调用函数:
$class::myStaticFunction();
Run Code Online (Sandbox Code Playgroud)
我知道这可以用call_user_func()完成,但我很难找到替代方法(如果有的话).我只是宁愿不用正则表达式用call_user_func()语句替换对遗留类的所有调用.
例如,
$stuff = call_user_func($class . '::myStaticFunction()');
Run Code Online (Sandbox Code Playgroud)
......工作得很好.
有没有人知道是否有更简单的表达方式:$ dynamicClassName :: staticFunction()PHP 5.2?也许我错过了我的语法等等.
您可以升级PHP版本.从5.3开始,您就可以使用它们来调用您的函数.
5.2中没有别的办法.
你可以使用这篇文章,也许更容易阅读:
$stuff = call_user_func_array(array($class, $method), array($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3156 次 |
| 最近记录: |