Question

Being new to PHP, and with a lot riding on this "function wrapper", I thought I'd get a few opinions and a little feedback. I'd like to get about five comments, if possible.

Now before you ask, I have many reasons for wanting to wrap other (WordPress) functions, the primary being hassle-free upgrading. It was also important for me to be able to set a custom name for each function definition, hence the $wrap array.

But I digress, does this look acceptable and relatively bulletproof?

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 );
}

... and the function will be called like...

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

Many thanks!

EDIT:

Per chaos's sugeestion below, is this the right way to declare $wrap as static?

static $wrap = array
( ...
Was it helpful?

Solution

Well, your fundamental aim seems like madness, but with your fundamental aim taken as a given, yes, that function looks like a fine way to accomplish it.

You should declare $wrap as static to ensure that you're not pointlessly regenerating the array every time the function is called, though.

And this:

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

would probably be smart too.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top