sábado, 2 de agosto de 2014

Las funciones en PHP - 1 de 2



1. Creación

Las funciones permiten reutilizar varias veces el código PHP. Por ejemplo, si tiene una página Web con precio sin IVA de diferentes productos, puede crear una función para calcular el precio con IVA de cada producto. Esto evita escribir en cada línea el cálculo
en PHP. En su desarrollo, intente agrupar el código. Así el mantenimiento es más fácil. De hecho, cuanto más se escribe el código, es más probable que cometa errores.

La sintaxis para crear una función es: función nombre_de_la función ($argumento) { }

Nunca ponga espacios ni caracteres especiales en el nombre de una función. El parámetro también se llama argumento.

Intente nombrar la función con palabras separadas por el símbolo _ o con mayúsculas que expliquen lo que hace la función, por ejemplo: nombre_de_la_función o NombreDeLaFunción.

Por ejemplo:

<?php
función calculo_iva($precio_bruto) {
return $precio_bruto * 1.21;
}
?>

Esta función calcula el precio con IVA a partir del precio sin IVA, que pasa como parámetro, y devuelve el resultado a través de la palabra clave return. Una función no está obligada a devolver un resultado; puede servir solo para mostrar un mensaje, por ejemplo.

Para recurrir a esta función, escriba lo siguiente:

Por ejemplo:

<?php
calculo_iva(12);
?>

O al final:

<?php
función calculo_iva($precio_bruto) {
return $precio_bruto * 1.21;
}
$precio_iva = calculo_iva(12);
echo "12 euros sin IVA corresponden a ".$precio_iva" euros con IVA";
?>

Da como resultado:

12 euros sin IVA corresponden a 14.52 euros con IVA

El número 12 pasa con el parámetro de la función; por tanto $precio_bruto se convierte en igual a 12, y la función devuelve 12*1.21 (14.52) en la variable $precio_iva.

Puede crear funciones que tomen varios parámetros o ningún parámetro.

En el siguiente ejemplo, la función toma varios parámetros y devuelve un valor:

<?php
function junta_palabra($palabra1,$palabra2,$palabra3) {
$devuelve = $palabra1." ".$palabra2." ".$palabra3;
Return $devuelve;
}
echo junta_palabra("Hola","Juan","ESTEFANIA");
?>

Da como resultado:

Hola Juan ESTEFANIA

En el siguiente ejemplo, la función no toma ni devuelve ningún valor:

<?php
function muestra_Hola() {
echo "Hola";
}
muestra_Hola();
?>

Da como resultado:

Hola


2. Alcance de las variables

Este concepto es muy importante porque es el origen de muchos errores, sobre todo para aquellas personas que no han aprendido las nociones generales del desarrollo.

Las variables declaradas o que pasan como argumentos a una función solo son válidas en la función.

Por ejemplo:

<?php
function muestra_palabra($nombre) {
echo $nombre;
}
muestra_palabra("Hola "); //muestra Hola
echo $nombre; //error porque $nombre no se define
?>

Da como resultado:

Hola
Notice: Undefined variable: nombre

La variable $nombre solo es válida en la función muestra_palabra.

Para evitar este error, defina la variable $nombre fuera de la función:

<?php
$nombre = "Juan";
function muestra_palabra($nombre) {
echo $nombre;
}
muestra_palabra("Hola "); //muestra Hola
echo $nombre; //muestra Juan
?>

Da como resultado:

Hola Juan

Atención: la variable $nombre definida antes que la función no es la misma que $nombre pasada con el parámetro de la función.

Lo mismo ocurre con una variable declarada fuera de la función, que tampoco es válida en la función.

Por ejemplo:

<?php
$nombre = "Juan";
function muestra_palabra() {
echo $nombre; //muestra un error
}
muestra_palabra();
?>

Da como resultado:

Notice: Undefined variable: nombre


3. Las variables globales

Puede declarar una variable con la palabra clave global. Esto tiene como efecto definir la variable en todo el código PHP de su página y en las funciones.

Si retomamos el ejemplo anterior agregando $nombre como variable global en la función:

<?php
$nombre = "Juan";
function muestra_palabra() {
global $nombre;
echo $nombre;
}
muestra_palabra();
?>

Da como resultado:

Juan

La otra solución consiste en utilizar la tabla asociativa $GLOBALS, que contiene todas las variables con su valor. Esta tabla tiene un alcance global a toda la página php (capítulo Transmitir datos de una página a otra - Las variables superglobales).


4. Las variables estáticas

Una variable declarada con la palabra clave static en una función permite conservar su valor cuando se llama varias veces a la función. De hecho, elimina el valor de la variable cada vez que se llama a la función:

<?php
function muestra_numero() {
$numero = 0;
$numero=$numero + 1;
echo $numero."; ";
}
muestra_numero(); //muestra 1
muestra_numero(); //muestra 1
?>

Da como resultado:

1; 1;

En el siguiente ejemplo, $numero se declara como static:

<?php
function muestra_numero() {
static $numero = 0;
$numero=$numero + 1;
echo $numero."; ";
}
muestra_numero(); //muestra 1
muestra_numero(); //muestra 2
?>

Da como resultado:

1; 2;

De esta manera, $numero conserva su valor de una llamada a otra de la función.


5. Funciones útiles
  • La función isset() permite probar que existe una variable. Si existe, devuelve true, y si no existe, false.

Por ejemplo:

<?php
$frase = "Hola, hace buen tiempo";
if (isset($frase)){
echo "La variable existe.";
}
else {
echo "La variable no existe.";
}
?>

Da como resultado:

La variable existe.

Por tanto, su sintaxis es:

$existe = isset ($variable);
  • La función var_dump() permite mostrar el tipo de contenido y el contenido de una variable.

Por ejemplo:

<?php
$frase = "Hola, hace buen tiempo";
var_dump($frase);
?>

Da como resultado:

string(21) "Hola, hace buen tiempo"

Por tanto, su sintaxis es:

var_dump($variable);

Esta función también acepta las tablas como parámetro.

Por ejemplo:

<?php
$tabla = array("Fresa", "Plátano", array(1, 2, 3));
var_dump($tabla);
?>

Da como resultado:

array(3) { [0]=> string(6) "Fresa" [1]=> string(6) "Plátano" [2]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }

  • La función empty() permite comprobar si una variable es o no nula. Devuelve true si es nula, y false si no lo es.

Por ejemplo:

<?php
$frase = "Hola, hace buen tiempo";
if (empty($frase)){
echo "La variable es nula.";
}
else {
echo "La variable no es nula.";
}
?>

Da como resultado:

La variable no es nula.

Desde PHP5.5 puede pasar como argumento de una función.

Por ejemplo:

<?php
function always_false() {
return false;
}
if (empty(alway_false())) {
echo ’Se mostrará esto’
}
?>

Da como resultado:

Se mostrará esto

Por tanto, su sintaxis es:

$nula = empty ($variable o function());


6. Paso por referencia

Cuando una variable se pasa como argumento de una función, se pasa por el valor, es decir, es una copia de la variable que se ha pasado como argumento.

Ejemplo de paso por el valor:

<?php
function añadir_señor($argumento) {
$argumento = $argumento . " Señor";
}
$texto = "Hola";
añadir_señor($texto);
echo $texto;
?>

Da como resultado:

Hola

Se pasa la variable $texto como argumento a la función; no se cambia su valor en la función, solo se envía su valor a la función.

El paso del parámetro se realiza agregando el símbolo & delante de la variable. Tiene como efecto pasar la dirección de memoria de la variable y así puede modificar su valor.

Ejemplo de paso por referencia:

<?php
function añadir_señor(&$argumento) { //paso por referencia
$argumento = $argumento . " Señor";
}
$texto = "Hola";
añadir_señor($texto);
echo $texto;
?>

Da como resultado:

Hola Señor

Se pasa la variable $texto como argumento a la función con ayuda de &$argumento y se modifica al concatenar $argumento con la cadena de caracteres " Señor". Al salir de la función, $texto tiene como valor $argumento, es decir, "Hola Señor".



Espero haber ayudado en algo. Hasta la próxima oportunidad!







No hay comentarios:

Publicar un comentario en la entrada