User-defined functions
A function may be defined using syntax such as the following:
Example 12-1. Pseudo code to demonstrate function uses <?php function foo ($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Example function.\n"; return $retval; } ?> |
|
Any valid PHP code may appear inside a function, even other functions and class definitions.
In PHP 3, functions must be defined before they are referenced. No such requirement exists in PHP 4. Except when a function is conditionally defined such as shown in the two examples below.
When a function is defined in a conditional manner such as the two examples shown. Its definition must be processed prior to being called.
Example 12-2. Conditional functions <?php
$makefoo = true;
/* We can't call foo() from here since it doesn't exist yet, but we can call bar() */
bar();
if ($makefoo) { function foo () { echo "I don't exist until program execution reaches me.\n"; } }
/* Now we can safely call foo() since $makefoo evaluated to true */
if ($makefoo) foo();
function bar() { echo "I exist immediately upon program start.\n"; }
?> |
|
Example 12-3. Functions within functions <?php function foo() { function bar() { echo "I don't exist until foo() is called.\n"; } }
/* We can't call bar() yet since it doesn't exist. */
foo();
/* Now we can call bar(), foo()'s processesing has made it accessible. */
bar();
?> |
|
PHP does not support function overloading, nor is it possible to undefine or redefine previously-declared functions.
Note: Function names are case-insensitive, though it is usually good form to call functions as they appear in their declaration.
PHP 3 does not support variable numbers of arguments to functions, although default arguments are supported (see Default argument values for more information). PHP 4 supports both: see Variable-length argument lists and the function references for func_num_args(), func_get_arg(), and func_get_args() for more information.