# Funciones y bibliotecas

## Funciones

En PHP se pueden definir funciones, de manera que no haga falta escribir el mismo código varias veces. Las funciones deben definirse antes de utilizarlas (aunque no sea en el mismo fragmento de código php). Las funciones pueden no tener argumento o tener argumentos por valor o por referencia.

Los nombres de las funciones siguen las mismas reglas de los identificadores de PHP, es decir, deben comenzar por una letra o un guión bajo (_) y el resto de caracteres pueden ser letras, números o guiones bajos (se pueden utilizar caracteres no ingleses como acentos, eñes, etc), pero los nombres de funciones no distinguen entre mayúsculas o minúsculas.

La guía de estilo PEAR para PHP recomienda que los nombres de las funciones sigan el estilo camelCase (es decir, sin espacios ni guiones, con la primera palabra en minúsculas y el resto con la primera letra en mayúsculas).

Ejemplo de función y de su uso:

    <?php

    // ESTA ES LA DEFINICIÓN DE LA FUNCIÓN calculaHipotenusa
    function calculaHipotenusa($arg1, $arg2)
    {
        $hipotenusa = sqrt($arg1*$arg1+$arg2*$arg2);
        return $hipotenusa;
    }

    // ESTO ES UN EJEMPLO DE USO DE LA FUNCIÓN calculaHipotenusa
    $cateto1 = 12;
    $cateto2 = 16;
    $hipotenusa = calculaHipotenusa($cateto1, $cateto2);

    print "<p>El triángulo de lados $cateto1, $cateto2 y $hipotenusa es rectángulo.</p>\n";
    ?>
| El triángulo de lados 12, 16 y 20 es rectángulo.

PHP no distingue entre mayúsculas y minúsculas en los nombres de las funciones.

    <?php

    // ESTA ES LA DEFINICIÓN DE LA FUNCIÓN calculaHipotenusa
    function calculaHipotenusa($arg1, $arg2)
    {
        $hipotenusa = sqrt($arg1*$arg1+$arg2*$arg2);
        return $hipotenusa;
    }

    // ESTO ES UN EJEMPLO DE USO DE LA FUNCIÓN calculaHipotenusa
    $cateto1 = 12;
    $cateto2 = 16;
    $hipotenusa = CALCULAHIPOTENUSA($cateto1, $cateto2);

    print "<p>El triángulo de lados $cateto1, $cateto2 y $hipotenusa es rectángulo.</p>\n";
    ?>
| El triángulo de lados 12, 16 y 20 es rectángulo.

Volver al principio de la página

## Funciones con argumentos predeterminados

En PHP se pueden definir funciones con argumentos predeterminados, de manera que si en la llamada a la función no se envía un argumento, la función asume un valor predeterminado. Lógicamente, los argumentos predeterminados deben ser los últimos en la lista de argumentos, para evitar ambigüedades.

Los argumentos predeterminados se establecen en la definición de la función, igualando el nombre del argumento a su valor predeterminado.

El ejemplo siguiente muestra una función que calcula diferentes tipos de media (aritmética, geométrica, armónica). Los argumentos de la función son los números cuya media se debe calcular y el tipo de media a calcular. En el ejemplo, el tipo de media predeterminado es la media aritmética.

    <?php

    // ESTA ES LA DEFINICIÓN DE LA FUNCIÓN calculaMedia
    function calculaMedia($arg1, $arg2, $arg3='aritmética')
    {
        if ($arg3=='aritmética') {
            $media = ($arg1+$arg2)/2;
        } elseif ($arg3=='geométrica') {
            $media = sqrt($arg1*$arg2)/2;
        } elseif ($arg3=='armónica') {
            $media = 2*($arg1*$arg2)/($arg1+$arg2);
        }
        return $media;
    }

    // ESTO SON EJEMPLOS DE USO DE LA FUNCIÓN calculaMedia
    $dato1 = 12;
    $dato2 = 16;

    // EL TERCER ARGUMENTO INDICA EL TIPO DE MEDIA A CALCULAR
    $media = calculaMedia($dato1, $dato2, 'geométrica');
    print "<p>La media geométrica de $dato1 y $dato2 es $media.</p>\n";

    // AL NO PONER EL TERCER ARGUMENTO, LA FUNCIÓN DEVUELVE LA MEDIA ARITMÉTICA
    $media = calculaMedia($dato1, $dato2);
    print "<p>La media aritmética de $dato1 y $dato2 es $media.</p>\n";
    ?>
| La media geométrica de 12 y 16 es 6.9282032302755. La media aritmética de 12 y 16 es 14.

Volver al principio de la página

## Bibliotecas

Para que una función pueda ser utilizada en varias páginas sin tener que incluirla en cada página, se pueden crear bibliotecas, que no son más que archivos php que se pueden incluir en cualquier otro archivo. Las bibliotecas también se pueden utilizar para definir variables.

Por ejemplo, la cabecera de las páginas se puede definir en una función que está en un archivo funciones.php (el nombre puede ser cualquiera).

    <?php
    function cabecera($titulo)
    {
        print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">
    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
      <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
      <title>$titulo</title>
      <link href=\"estilo.css\" rel=\"stylesheet\" type=\"text/css\" />
    </head>

    <body>
    <h1>$titulo</h1>\n";
    }
    ?>

Si en cualquier documento se incluye el archivo funciones.php mediante la construcción include(), se puede llamar a las funciones desde cualquier punto del documento.

    <?php
    include "funciones.php";
    cabecera("Página de ejemplo");
    print "<p>Esta página es válida</p>";
    ?>
    </body>
    </html>

También se puede utilizar la construcción require(). La diferencia entre ambas es que require() produce un error si no se encuentra el archivo (y no se procesa el resto de la página), mientras que include() sólo produce un aviso (y se procesa el resto de la página).

Volver al principio de la página

Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.