Function Aliasing in PHP

Posted May 20, 2010

One question I've asked myself and I see asked on sites such as stackoverflow.com is if PHP is able to have "aliases" for functions. The answer is either, "no, you have to use a wrapper function" or to the more extreme "you can write an extension".

Since I'm one of those PHP developers who doesn't think that PHP's "eval" instruction is a demonic entity to be avoided at all costs, this opens a more viable answer:

<?php
function func_alias($target, $original) {
    eval("function $target() { \$args = func_get_args(); return call_user_func_array('$original', \$args); }");
}
?>

This works surprisingly well. Here is a code example:

<?php
function func_alias($target, $original) {
    eval("function $target() { \$args = func_get_args(); return call_user_func_array('$original', \$args); }");
}

function hello($recipient) {
    echo "Hello, $recipient\n";
}

function helloMars() {
    hello('Mars');
}

func_alias('greeting', 'hello');
func_alias('greetingMars', 'helloMars');

greeting('World');
greetingMars();
?>

Comments

There are no comments for this post.

No comments found

Add comment

Visit my Friends and Family

If you've enjoyed my site, please take a moment to visit my friends and family, many of whom have some interesting insights, and entertaining thoughts and ideas.