Bending PHP, Control Flow Flexibility With call_user_func()
August 16, 2011
In comparison to other dynamic languages like Python and Ruby, control flow mechanisms in PHP are rigid. But in the absence of first-class functions and limited OOP paradigms, there’s still some flexibility in the language thanks to built in functions like
While lacking the same syntactic sugar,
call_user_func() is the equivalent of variable variables(
$$v) for functions. But instead of declaring variables dynamically, it’s calling function dynamically.
This adds a very nice control flow mechanisms to PHP: dynamic function call ordering. Need to change the order a series of function is called depending on application state? With
call_user_func() and its twin function
call_user_func_array() it’s possible without the mess of hard coded control structures and missed fringe cases.