6.12. Creating Dynamic Functions

Problem

You want to create and define a function as your program is running.

Solution

Use create_function( ):

$add = create_function('$i,$j', 'return $i+$j;');

$add(1, 1); // returns 2

Discussion

The first parameter to create_function( ) is a string that contains the arguments for the function, and the second is the function body. Using create_function( ) is exceptionally slow, so if you can predefine the function, it’s best to do so.

The most frequently used case of create_function( ) in action is to create custom sorting functions for usort( ) or array_walk( ):

// sort files in reverse natural order
usort($files, create_function('$a, $b', 'return strnatcmp($b, $a);'));

See Also

Recipe 4.18 for information on usort( ); documentation on create_function( ) at http://www.php.net/create-function and on usort( ) at http://www.php.net/usort.

Get PHP Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.