6.11. Calling Variable Functions6.11.2. SolutionUse variable variables: function eat_fruit($fruit) { print "chewing $fruit."; } $function = 'eat_fruit'; $fruit = 'kiwi'; $function($fruit); // calls eat_fruit( ) 6.11.3. DiscussionIf you have multiple possibilities to call, use an associative array of function names: $dispatch = array( 'add' => 'do_add', 'commit' => 'do_commit', 'checkout' => 'do_checkout', 'update' => 'do_update' ); $cmd = (isset($_REQUEST['command']) ? $_REQUEST['command'] : ''); if (array_key_exists($cmd, $dispatch)) { $function = $dispatch[$cmd]; $function(); // call function } else { error_log("Unknown command $cmd"); } This code takes the command name from a request and executes that function. Note the check to see that the command is in a list of acceptable command. This prevents your code from calling whatever function was passed in from a request, such as phpinfo( ) . This makes your code more secure and allows you to easily log errors. Another advantage is that you can map multiple commands to the same function, so you can have a long and a short name: $dispatch = array( 'add' => 'do_add', 'commit' => 'do_commit', 'ci' => 'do_commit', 'checkout' => 'do_checkout', 'co' => 'do_checkout', 'update' => 'do_update', 'up' => 'do_update' ); 6.11.4. See AlsoRecipe 5.5 for more on variable variables. Copyright © 2003 O'Reilly & Associates. All rights reserved. |
|