PHP Manual
Prev |  | Next

# Chapter 13. Functions

# User-defined functions

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

    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 13-1. 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 13-2. 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.

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.

Prev | Home | Next
include_once() | Up | Function arguments