LENGUAJE PHP: TRABAJANDO CON ALMACENAMIENTO ESTÁTICO : Ficheros
Ficheros en PHP : Escribiendo y leyendo del disco duro
Funciones
Objetivo
- Las funciones es un elemento fundamental
- Permite crear código modular
- Una forma de estructurar nuestro programa
|
</div>
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
Los parámetros formales son variables locales a la función
|
Proceso de creación / invocación de una función
- Lo primero es declarar una función
- Esto implica dejar una zona de memoria identificada con el nombre de la función
- En contenido de esas posiciones de memoria serán las acciones de la función
- Estas acciones estarán establecidas no con valores reales, sino con los parámetros de la declaración
- Estos parámetros se conocen como parámetros formales
- Invocación de función
- Es un tipo de instrucción, invocar a una acción o función.
- lo primero que ocurrirá es que voy a esa zona de memoria
- Lo siguiente es dar los valores reales (de la invocación) a los parámetros de la función (de la declaracion.
- Una vez que la función termina de ejecutarse, se retornará a la instrucción siguiente de la invocación
- Si la función devuelve algún valor, se recogerá y asignará a la variable de la instrucción de asignación desde la cual se invocó
Ejercicio usando funciones
Haz un programa donde en el programa principal se creen dos variables $a y $b
- Crea una función que reciba como parámetros locales $a y $b
- La función visualizará el valor de las variables, las modificará y las volverá a visualizar
- El programa principal
- asignará valor a las variables
- las visualizará
- invocará a la función
- volverá a visualizar las variables
|
<?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){
...
}
Ejercicio usando funciones parámetros
Haz un programa donde en el programa principal se creen dos variables $a y $b y $c
- Crea una función que reciba como parámetros locales &$num1,&$num2 y $num3
- La función visualizará el valor de las variables, las modificará y las volverá a visualizar
- El programa principal
- asignará valor a las variables
- las visualizará
- invocará a la función
- volverá a visualizar las variables
|
<?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
|
ejemplo invocación a funciones
|
|
Tip: Este código funcionará correctamente
<?php
a(5,6);
/*Mas instrucciones*/
function a ($a, $b){
echo "valor de $a";
echo "valor de $b";
}
|
|
ejemplo invocación a funciones
|
|
Tip: Este código no funcionará
<?php
a(5,6);
/*Mas instrucciones*/
include ("funciones.php");
?>
- Contenido del ficheor funciones.php
<?php
function a ($a, $b){
echo "valor de $a";
echo "valor de $b";
}
?>
|
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-