Sunteți pe pagina 1din 4

Funciones y Procedimientos PHP

Al igual que en otros lenguajes estructurados, PHP nos permite crear nuestras propias funciones e
incluso crear nuestras propias libreras de funciones de manera simple y prctica.
El concepto de funcin en PHP es el mismo que en otros lenguajes de programacin, un conjunto de
instrucciones que modifican o crean ciertas variables para realizar una tarea ms o menos elemental,
recordando que las funciones siempre devuelven un valor y en el caso de PHP ese valor puede ser de
cualquiera de los tipos ya estudiados.
En el caso de los procedimientos, PHP no dispone de ninguna instruccin para crear procedimientos,
simplemente lo trataremos como una funcin que no devuelve ningn valor sino que se limita a ejecutar un
grupo de instrucciones.
Conviene recordar que tambin existen una gran cantidad de funciones integradas en PHP, las cuales son
muy fciles de utilizar. Tan slo hemos de realizar la llamada de la forma apropiada y especificar los parmetros
y/o variables necesarios para que la funcin realice su tarea. Cuando necesitemos crear una tarea que sea
repetitiva o comn es conveniente revisar o investigar si no existe una funcin integrada de PHP que ya realice
tal tarea.

Sintaxis de una funcin


function nombre_funcion(parametro1, parametro2,... parametroN)
{
Instruccion 1;
Instruccion 2;
Instruccion 3;
...
Instruccion N;
return valor;
}

Como se puede ver, para declarar la funcin se usa la palabra reservada function, seguidamente el nombre de
la funcin y la lista de parmetros entre parntesis. Dentro del bloque de instrucciones agrupadas debe existir
la instruccin return, la cual se encarga de devolver el valor deseado al punto del programa que invoco la
funcin

Ejemplo de funcin
<?php
function escribe_separa($cadena){
for ($i=0;$i<strlen($cadena);$i++){
echo $cadena[$i];
if ($i<strlen($cadena)-1)
echo "-";
}
}
escribe_separa ("hola");
echo "<p>";
escribe_separa ("Texto ms largo, a ver lo que hace");
?>

En el ejemplo anterior se crea una funcin escribe_separa que toma una cadena de caracteres y la reescribe
intercalando guiones (-), por ejemplo si el parmetro de la funcin es "hola", devuelve "h-o-l-a".

Para lograrlo se usa la funcin srtlen(), la cual devuelve el nmero de caracteres que componen una cadena.

Paso de parmetros. Caractersticas


Los parmetros son los datos que reciben las funciones y que utilizan para realizar las operaciones de la
funcin. Una funcin puede recibir cualquier nmero de parmetros, incluso ninguno.
function f1 ($parametro1, $parmetro2

As definimos una funcin llamada f1 que recibe dos parmetros. Como se puede observar, no se tiene que
definir el tipo de datos de cada parmetro.
Los parmetros tienen validez durante la ejecucin de la funcin, es decir, tienen un mbito local a la funcin
donde se estn recibiendo. Cuando la funcin se termina, los parmetros dejan de existir.

Cuando los parmetros se pasan por valor

El paso de parmetros en PHP se realiza por valor. "Por valor" es una manera tpica de pasar parmetros en
funciones, quiere decir que el cambio de un dato de un parmetro no actualiza el dato de la variable que se
pas a la funcin. Por ejemplo, cuando invocamos una funcin pasando una variable como parmetro, a pesar
de que cambiemos el valor del parmetro dentro de la funcin, la variable original no se ve afectada por ese
cambio. Puede que se vea mejor con un ejemplo:
function porvalor ($parametro1){
$parametro1="hola";
echo "<br>" . $parametro1; //imprime "hola"
}
$mivariable = "esto no cambia";
porvalor ($mivariable);
echo "<br>" . $mivariable; //imprime "esto no cambia"

Esta pgina tendr como resultado:


hola
esto no cambia

Cuando los parmetros se pasan por referencia


En contraposicin al paso de parmetros por valor, est el paso de parmetros por referencia. En este ltimo
caso, el cambio del valor de un parmetro dentro de una funcin s afecta al valor de la variable original.
Podemos pasar los parmetros por referencia si, en la declaracin de la funcin, colocamos un "&" antes del
parmetro.
function porreferencia(&$cadena)
{
$cadena = 'Si cambia';
}
$str = 'Esto es una cadena';
porreferencia ($str);
echo $str; // Imprime 'Si cambia'

Este script mostrar por pantalla 'Si cambia'.

Por ultimo. Parmetros por defecto

Podemos definir valores por defecto para los parmetros. Los valores por defecto sirven para que los
parmetros contengan un dato predefinido, con el que se inicializarn si no se le pasa ningn valor en la
llamada de la funcin. Los valores por defecto se definen asignando un dato al parmetro al declararlo en la
funcin.
function pordefecto ($parametro1="pepe";$parametro2=3)

Para la definicin de funcin anterior, $parametro1 tiene como valor por defecto "pepe", mientras que
$parametro2 tiene 3 como valor por defecto.
Si llamamos a la funcin sin indicar valores a los parmetros, estos tomarn los valores asignados por defecto:
pordefecto () // $parametro1 vale "pepe" y $parametro2 vale 3

Si llamamos a la funcin indicando un valor, este ser tenido en cuenta para el primer parmetro.
pordefecto ("hola") // $parametro1 vale "hola" y $parametro2 vale 3

Atencin, estamos obligados a declarar todos los parmetros con valores por defecto al final.

Ejemplos
Procedimiento que toma una palabra y la vuelve a escribir con guiones
intercalados
<?php
function escribe_separa($cadena){
for($i=0;$i<strlen($cadena);$i++){
echo $cadena[$i];
if ($i<strlen($cadena)-1){
echo "-";
}
}
}
escribe_separa("hola");
echo "<br />";
escribe_separa("Texto mas largo, a ver lo que hace");
?>

Funcin que genera una clave aleatoria

<?php
function generaClave(){
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$cad = "";
for($i=0;$i<8;$i++) {
$cad .= substr($str,rand(0,62),1);
}
return $cad;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Generar Clave PHP</title>
</head>
<body>
<h2>Generar Clave aleatoria</h2>

<?php
$claveNueva = generaClave();
echo "Clave generada: <strong>$claveNueva</strong>";
?>
</body>
</html>

S-ar putea să vă placă și