Funciones y
bibliotecasEn 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.
Por ejemplo, el tratamiento de la matriz $_REQUEST comentada en la lección sobre recogida de datos se puede concentrar en una función.
<?php
function recoge($var)
{
$tmp = (isset($_REQUEST[$var])) ? trim(strip_tags($_REQUEST[$var])) : '';
if (get_magic_quotes_gpc()) {
$tmp = stripslashes($tmp);
}
$tmp = str_replace('&', '&', $tmp);
$tmp = str_replace('"', '"', $tmp);
return $tmp;
}
$nombre = recoge('nombre');
if ($nombre == "") {
print "<p>No has escrito ningún nombre</p>";
} else {
print "<p>Tu nombre es $nombre</p>";
}
?>
|
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.
En el ejemplo siguiente, se modificar la función recoge() del ejemplo anterior para que devuelva un valor predeterminado si el script no recibe el dato correspondiente.
<?php
function recoge($var, $var2='')
{
$tmp = (isset($_REQUEST[$var])&&($_REQUEST[$var]!='')) ?
trim(strip_tags($_REQUEST[$var])) : trim(strip_tags($var2));
if (get_magic_quotes_gpc()) {
$tmp = stripslashes($tmp);
}
$tmp = str_replace('&', '&', $tmp);
$tmp = str_replace('"', '"', $tmp);
return $tmp;
}
// En el ejemplo siguiente, al no enviar el segundo argumento,
// si no existe $_REQUEST['edad'], devuelve el valor vacío.
$edad = recoge("edad");
if ($edad=="") {
print "<p>No has escrito tu edad</p>";
} else {
print "<p>Tu edad es $edad</p>";
}
// En el ejemplo siguiente, al enviar el segundo argumento,
// si no existe $_REQUEST['edad'], devuelve el segundo argumento enviado.
$edad = recoge("edad", 0);
if ($edad==0) {
print "<p>No has escrito tu edad</p>";
} else {
print "<p>Tu edad es $edad</p>";
}
?>
|
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).
Esta página forma parte del curso "Páginas web con PHP" disponible en http://www.mclibre.org
Esta obra está bajo una licencia de Creative
Commons.