Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/funcionesIntroduccion»
De WikiEducator
(→Declaración de funciones) |
(→Declaración de funciones) |
||
| Línea 30: | Línea 30: | ||
*En la declaración de una función, tenemos tres partes: | *En la declaración de una función, tenemos tres partes: | ||
;1.-Nombre o identificación de la función | ;1.-Nombre o identificación de la función | ||
| + | ** El nombre de la función es un identificador que empieza por una letra o guion bajo, seguido de 0 o más letras, números o guiones bajos. | ||
| + | {{Tip|Expresión regular para el identificador de funciones: | ||
| + | '''''[a-zA-Z_f_][a-zA-Z0-9_]*''''' | ||
| + | }} | ||
| + | |||
;2.-Parámetros formales | ;2.-Parámetros formales | ||
** Se especifican entre paréntesis. (Los paréntesis son necesarios, aunque no haya parámetros). | ** Se especifican entre paréntesis. (Los paréntesis son necesarios, aunque no haya parámetros). | ||
| − | ** Se puede especificar el tipo de cada parámetro (a partir de la versión 7.2). | + | ** Se puede (debe) especificar el tipo de cada parámetro (a partir de la versión 7.2). (Type hiding) |
| + | ** Se puede incluso especificar diferentes tipos en cada parámetro (Union Type). En este caso se separa por comas | ||
| + | <source lang=php> | ||
| + | //Función que solo recibe datos de tipo int o string | ||
| + | //Me muestra el dato y su tipo | ||
| + | function mostrar_datos(int|string $dato): string | ||
| + | { | ||
| + | $tipo = gettype($dato); | ||
| + | return "<h1>El dato $dato es de tipo $tipo</h1>"; | ||
| + | } | ||
| + | |||
| + | </source> | ||
** Se puede asignar un valor por defecto (si un parámetro tiene valor por defecto, no es obligatorio proporcionarle un valor en la invocación). | ** Se puede asignar un valor por defecto (si un parámetro tiene valor por defecto, no es obligatorio proporcionarle un valor en la invocación). | ||
| + | <source lang=php> | ||
| + | function saludar(string $nombre = "Invitado"): string | ||
| + | { | ||
| + | return "<h1>Hola $nombre, bienvenido a nuestro sitio web</h1>"; | ||
| + | } | ||
| + | </source> | ||
| + | |||
| + | ** El hecho de poder dar valores por defecto, nos permitirá sobrecargar una función, es decir, que según el número y tipo de los parámetros, pueda hacer una acción/es u otra/s. | ||
;3.-Tipo de retorno | ;3.-Tipo de retorno | ||
| − | + | ** Tambien se puede especificar que la función retorna diferentes valores | |
| + | <source lang=php> | ||
| + | function sumar(int|float $a, int|float $b): int|float | ||
| + | { | ||
| + | return $a + $b; | ||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
#El cuerpo de la función. Dentro de él puede estar la instrucción `return`, la cual finaliza la ejecución de la función y devuelve el flujo al programa, a la instrucción que llamó a la función. | #El cuerpo de la función. Dentro de él puede estar la instrucción `return`, la cual finaliza la ejecución de la función y devuelve el flujo al programa, a la instrucción que llamó a la función. | ||
| − | # | + | # '''return''' puede (o debe) devolver el valor que queremos que la función retorne. |
</div> | </div> | ||
<hr /> | <hr /> | ||
<div class=slide> | <div class=slide> | ||
====Identificador de función==== | ====Identificador de función==== | ||
| − | |||
| − | |||
| − | |||
| − | |||
</div> | </div> | ||
<div class=slide> | <div class=slide> | ||
Revisión de 05:50 9 dic 2025
Contenido
Funciones
Proceso de creación / invocación de una función
- Primero, declaramos la función
- Esto implica reservar una zona de memoria identificada con el nombre de la función.
- El contenido de esas posiciones de memoria será el conjunto de acciones de la función.
- Estas acciones estarán definidas en función de los **parámetros formales** de la declaración.
- Invocación de la función
- La invocación es una instrucción para ejecutar la función.
- Lo primero que ocurre es que el programa accede a esa zona de memoria.
- Luego, se asignan los valores reales de la invocación a los parámetros formales de la función.
- Cuando la función termina de ejecutarse, se retorna a la instrucción que sigue a la llamada.
- Si la función devuelve un valor, este se asigna a la variable de la instrucción de asignación desde la cual se invocó.
</div>
<?php function a(&$num1, &$num2, $num3){ echo "Dentro de la función visualizando 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"; } //Programa principal $a = 100; $b = 200; $c = 300; echo "En el main antes de invocar la función visualizando variables<hr />"; echo "Valor de variables \$a = $a \$b = $b \$c = $c <br />"; a($a, $b, $c); echo "En el main después de invocar la función visualizando variables<hr />"; echo "Valor de variables \$a = $a \$b = $b \$c = $c <br />"; ?>



