Plantilla:PHP/Declaracion/Funciones
De WikiEducator
Revisión a fecha de 05:33 20 oct 2017; ManuelRomero (Discusión | contribuciones)
Saltar a: navegación, buscar
Contenido
Funciones
Declaración de funciones
function nombreFuncion ($paramFormal1, $paramFormal2 ,...){ //Instrucciones de la función return $valorRetorno //Opcionalmente en caso de que devuelva algún valor la función }
- Es importante diferenciar entre declarar una función e invocar a una función
- Algo obvio, pero importante
- En la declaración tenemos tres partes
- nombre o identificación de funciones
- parámetros formales entre paréntesis (Estos han de existir, aunque no haya parámetros)
- Cuerpo de la función, dentro de él puede estar la instrucción return, en cuyo momento termina la ejecución de la función y se vuelve a la siguiente instrucción del programa, siguiente a la invocación de la función.
- Identificador de función
- El nombre de función es un identificador que empieza por una letra o guión bajo, seguido 0 o muchas letras, números o guiones bajos
Tip: Expresión regular para el identificador de funciones
[a-zA-Z_f_][a-zA-Z0-9_]*
- Parámetros formales
- Son nombres de variables que usaré al escribir el código o cuerpo de la función
- El nombre ha de ser significativo y se convertirán en variables locales a la función
- Una vez que se termina la función estas variables desaparecerán de memoria
Haz un programa donde en el programa principal se creen dos variables $a y $b
|
- Una posible solución
<?php function a($a, $b){ echo "Dentro de la función visualizando valores <hr />"; echo "Valor de los parámetros \$a = $a \$b = $b <br />"; $a+=5; $b+=5; echo "Valor de los parámetros \$a = $a \$b = $b <br />"; echo "Salgo de la función"; } //Ahora considero programa principal $a=100; $b=200; echo "En el main antes de invocar a la función visualizando variables<hr />"; echo "Valor de variables \$a = $a \$b = $b <br />"; a($a,$b); echo "En el mail después de invocar a la función visualizando variables<hr />"; echo "Valor de variables \$a = $a \$b = $b <br />"; ?>
Parámetros formales: Valores y referencias
- Cómo hemos visto, los parámetros formales son valores pasados en la invocación a la función
- Si queremos que la función pueda modificar el valor de los valores de los parámetros, en este caso hemos de pasarlos por referencia
- En este caso lo que ocurre en realidad es que pasamos la dirección de memoria dónde se guarda el valor.
- La dirección de memoria, no la podremos visualizar ni operar con ella, pues en php no existe la aritmética de punteros o direcciones de memoria
- Parámetros formales
- Valores y referencias
Para pasar el parámetro por referencia, simplemente hay que poner el símbolo de dirección de memoria & antes del nombre de la variable en la declaración de parámetros
function nombre_funcion(&$paramRef1, &$paramRef2, $paramVal1){ ... }
Haz un programa donde en el programa principal se creen dos variables $a y $b y $c
|
<?php function a(&$num1, &$num2, $num3){ echo "Dentro de la función visibilizando valores <hr />"; echo "Valor de los parámetros \$num1 = $num1 \$num2 = $num2 \$num3 = $num3<br />"; $num1+=5; $num2+=5; $num3+=5; echo "Valor de los parámetros \$num1 = $num1 \$num2 = $num2 \$num3 = $num3<br />"; echo "Salgo de la función"; } //Ahora considero programa principal $a=100; $b=200; $c=300; echo "En el main antes de invocar a la función visualizando variables<hr />"; echo "Valor de variables \$a = $a \$b = $b \$c = $c <br />"; a($a,$b,$c); echo "En el mail después de invocar a la función visualizando variables<hr />"; echo "Valor de variables \$a = $a \$b = $b \$c = $c <br />"; ?>
- Invocando funciones
- Una vez creada una función la podemos invocar como si fuera una instrucción del lenguaje
- No sin razón en determinados ambientes se conoce a las funciones y procedimientos como instrucciones virtuales ...
- En php puedo invocar a una función antes de declararla, siempre que la declare en el mismo fichero
Variables dentro de una función
- Dentro de una función las variables que declaremos son locales a esa función.
- No podré acceder a su valor fuera de la función
- Esto también implica que dentro de una función no puedo acceder al valor de una variable definida fuera de la función
- Observa el siguiente ejemplo
<?php function modifica_valor(){ echo "Valor de <b>var1</b> dentro de función -$var1- <br /> "; $var1++; echo "Valor de <b>var1</b> dentro de función moficada -$var1- <br /> "; } $var1 = 20; echo "Valor de <b>var1</b> en programa principal antes de invocar función: -$var1- <br />"; modifica_valor(); echo "Valor de <b>var1</b> en progrma principal después de invocar la función: -$var1- <br />"; ?>
- Vemos que genera la siguiente salida
Valor de var1 en programa principal antes de invocar función: -20- Valor de var1 dentro de función -- Valor de var1 dentro de función moficada -1- Valor de var1 en progrma principal después de invocar la función: -20-
- Sin embargo si quieremos acceder al valor de $var dentro de la función sí que podemos
- Ĥemos de usar la palabra reservada $global
<?php function modifica_valor(){ global $var1; //Indicamos que esta variables se puede globalizar echo "Valor de <b>var1</b> dentro de función -$var1- <br /> "; $var1++; echo "Valor de <b>var1</b> dentro de función moficada -$var1- <br /> "; } $var1 = 20; echo "Valor de <b>var1</b> en programa principal antes de invocar función: -$var1- <br />"; modifica_valor(); echo "Valor de <b>var1</b> en progrma principal después de invocar la función: -$var1- <br />"; ?>
- Ahora podemos observar cómo sí que se accede al valor dentro de la función
Valor de var1 en programa principal antes de invocar función: -20- Valor de var1 dentro de función -20- Valor de var1 dentro de función moficada -21- Valor de var1 en progrma principal después de invocar la función: -21-
Funciones propias de php sobre tipos y valores
http://php.net/manual/es/ref.var.php
- Existen una serie (muchas) de funciones que son interesantes de conocer
- Estas funciones ya están creadas y se pueden usar directamente
- Están relacionadas con los tipos de datos y valores
- Alguna de ellas son extremadamente útiles y utilizadas, por ejemplo antes de procesar un dato, hay que ver que dicho dato tenga valor.
- A continuación trataremos alguna de ellas
void var_dump($expresion)
- Nos da información sobre la estructura de un valor resultado de una expresion
bool isset ( $variable )
- verifica que una variable tiene valor (está definida y no tiene un valor null)
<?php $VariableValor= 5; print ("El valor de la variable es $VariableValor"); print ("El valor de otra variable es $OtraVariableValor"); if (isset($VariableValor)) print ("VariableValor tiene valor asignado"); else print ("VariableValor no no tiene valor asignado"); if (isset($OtraVariableValor)) print ("OtraVariableValor tiene valor asignado"); else print ("OtraVariableValor no no tiene valor asignado"); ?>
Funciones para determinar existencia de variables
Tenemos tres funciones muy parecidas pero no del todo iguales
Determina si una variable ($variable) tiene valor null | Determina si una variable ($variables)está vacía | Determina is una variable ha sido definida y no tiene un valor vacío. |
bool empty ($varriable)
- Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
- son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos
- Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
string is_int($variable); string is_double($variable); string is_bool($variable); string is_integer($variable); string is_null($variable); string is_string($variable); ...
$a=5;