这个简单的PHP函数包装器看起来合理吗?

Does this simple PHP function wrapper look sensible for its purpose?

提问人:Jeff 提问时间:7/23/2009 最后编辑:chaosJeff 更新时间:8/5/2009 访问量:578

问:

作为PHP的新手,并且对这个“函数包装器”有很多东西依赖,我想我会得到一些意见和一些反馈。如果可能的话,我想得到大约五条评论。

现在在你问之前,我有很多理由想要包装其他(WordPress)功能,主要是无忧升级。对我来说,能够为每个函数定义设置自定义名称也很重要,因此 .$wrap array

但我跑题了,这看起来可以接受并且相对防弹吗?

function core_oo( $function )
{
    $args = array_slice( func_get_args(), 1 );
    $wrap = array
    (
        'comment' => 'the_comment',
        'comments' => 'have_comments',
        'post' => 'the_post',
        'posts' => 'have_posts'
    );
    return call_user_func_array( $wrap[ $function ], $args );
}

...该函数将被调用为...

core_oo( 'post', 'arg1', 'arg2' );

非常感谢!

编辑:

根据下面的混沌,这是将$wrap声明为静态的正确方法吗?

static $wrap = array
( ...
php wordpress wordpress主题

评论

0赞 chaos 7/24/2009
回复:是的,就是这样。static $wrap

答:

6赞 chaos 7/23/2009 #1

好吧,你的基本目标看起来很疯狂,但考虑到你的基本目标,是的,这个功能看起来是实现它的好方法。

但是,您应该声明 as 以确保每次调用函数时都不会毫无意义地重新生成数组。$wrapstatic

还有这个:

if(!isset($wrap[$function]))
    trigger_error('No underlying function known for ' . $function, E_USER_ERROR);

可能也很聪明。

评论

0赞 Jeff 7/24/2009
谢谢混沌!我听别人说我的基本目标看起来很奇怪,但从来都不是一个好的理由。我(可能是有缺陷的)想法是,在 WordPress 升级期间,如果我的主题中的某些内容损坏,我将有一个简单的参考来检查以立即修复它。此外,通过包装所有这些 WP 功能,如果在升级过程中出现问题,只需更改一行而不是多行即可。你知道更好的方法来做到这一点吗?
0赞 chaos 7/24/2009
老实说,我真的不明白这个包装器将如何使你所描述的任何事情比仅仅使用本机 WP 调用更容易。这就是为什么它看起来很奇怪。
0赞 Jeff 7/24/2009
我正在使用大约 40 个默认的 WordPress 函数,这些函数散布在我的主题文件中。我想通过包装它们,并在一个中心位置使用它们,如果一个功能变得过时或损坏......更改一个文件中的一行比更改多个文件中的多行要好。
1赞 chaos 7/24/2009
很公平。如果这种情况在 WP 升级中经常发生,并且您通常可以通过调用具有相同参数的不同函数来修复它,那么我想这将是富有成效的。
1赞 Jeff 7/24/2009
非常感谢!我正式宣布堆栈溢出社区是网络上最好的。:)