Chapter 8. Functions

User-defined functions

A function may be defined using syntax such as the following:

Example 8.1. Psuedo 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 8.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 8.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 accessable. */

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.

This HTML Help has been published using the chm2web software.