|
|
| (7 revisiones intermedias por el mismo usuario no mostrado) |
| Línea 1: |
Línea 1: |
| − | <div id=parrafo>
| + | __NOEDITSECTION__ |
| − | <div class=slide>
| + | __NOTOC__ |
| − | ==Funciones==
| + | {{:Usuario:ManuelRomero/ProgramacionWeb/Funciones/nav}} |
| − | {{ManuelRomero/PHP/funciones}} | + | |
| − | ===Funciones recursivas===
| + | |
| − | {{ManuelRomero/PHP/funcionesRecursivas}}
| + | |
| − | | + | |
| − | ===Funciones anónimas===
| + | |
| − | <br />
| + | |
| − | {{MRM_Definicion|Title=Qué son|
| + | |
| − | ;Son funciones que no tienen nombre
| + | |
| − | ;Se conocen como (funciones de clousura funciones cierre), y de hecho implementa la clase (Clousura)[https://www.php.net/manual/es/class.closure.php]
| + | |
| − | ;Crear una función anónima:
| + | |
| − | <source lang=php>
| + | |
| − | function (){
| + | |
| − | return "Hola desde una función anónima";
| + | |
| − | }
| + | |
| − | </source>
| + | |
| − | }}
| + | |
| − | | + | |
| − | <br />
| + | |
| − | {{MRM_Pregunta|
| + | |
| − | ;Ahora viene la paradoja de para qué puede servir y cómo la puedo invocar.
| + | |
| − | }}
| + | |
| − | <br />
| + | |
| − | ;Para invocar a una función anónima tenemos dos formas:
| + | |
| − | :<span id=r>A través de las variables de funciones</span>
| + | |
| − | :<span id=r>Como argumento en una función</span>, o sea que el parámetro de una función sea otra función
| + | |
| − | ;Variables de funciones
| + | |
| − | *Declaro una variable y le asigno una función
| + | |
| − | *En realidad es una forma diferente de declarar la función e invocarla, tiene la ventaja de gestionar todo como variables (posible comodidad por parte del programador)
| + | |
| − | *Si uso esta técnica, no puedo invocar a la función antes de su declaración (ya que no existe en contenido de la variable)
| + | |
| − | *Consiste en declarar una variable y asiganer la función
| + | |
| − | *Posteriormente podré invocar la función a través de la variable (he de poner también paréntesis en la invocación y no olvidar el ; (punto y coma) en la asignación)
| + | |
| − | <source lang=php>
| + | |
| − | <?php
| + | |
| − | $mi_funcion = function () {
| + | |
| − | return "hola caracola";
| + | |
| − | };
| + | |
| − | d
| + | |
| − | echo $mi_funcion();
| + | |
| − | //imprimiría "hola caracola"
| + | |
| − | //=====================================
| + | |
| − | | + | |
| − | echo $mi_funcion();
| + | |
| − | | + | |
| − | $mi_funcion = function () {
| + | |
| − | return "hola caracola";
| + | |
| − | };
| + | |
| − | //Este código fallaría,
| + | |
| − | //=====================================
| + | |
| − | <?php
| + | |
| − | echo mi_funcion();
| + | |
| − | | + | |
| − | function mi_funcion () {
| + | |
| − | return "hola caracola";
| + | |
| − | };
| + | |
| − | | + | |
| − | //Este código funcionaría, php legunaje de doble pasada en su interpretación,
| + | |
| − | ?>
| + | |
| − | | + | |
| − | </source>
| + | |
| − | | + | |
| − | | + | |
| − | | + | |
| − | <source lang=php>
| + | |
| − | | + | |
| − | </source>
| + | |
| − | ;Invocación usando la función como un parámetro en otra función
| + | |
| − | *Esto se puede conseguir ver, usando alguna función del sistema que espere recibir una función de clausura, como iremos viendo a lo largo del curso.
| + | |
| − | spl_autoload_register(https://www.php.net/manual/es/function.spl-autoload-register.php)
| + | |
| − | array_walk (https://www.php.net/manual/es/function.array-walk.php)
| + | |
| − | array_map (https://www.php.net/manual/es/function.array-map.php)
| + | |
| − | array_reduce (https://www.php.net/manual/es/function.array-reduce.php)
| + | |
| − | | + | |
| − | *Otra forma de utilizarlo, es usando la función <span id=r>call_user_func</span>, con esta función invocamos a una función anónima, necesitamos acceder a ello, y lo podemos hacer a través de un identificador, o escribiendo el código de la funćión anónima
| + | |
| − | <source lang=php>
| + | |
| − | <?php
| + | |
| − | call_user_func(function ($nombre){echo "hola $nombre";}, "Manuel");
| + | |
| − | | + | |
| − | //Este código nos escribirá "hola Manuel";
| + | |
| − | ?>
| + | |
| − | </source>
| + | |
| − | *Podríamos implementar el código anterior usando variables, posiblemente se puede considerar que mejoraríamos en legibilidad
| + | |
| − | <source lang=php>
| + | |
| − | <?php
| + | |
| − | $saludar = function ($nombre){
| + | |
| − | echo "hola $nombre";
| + | |
| − | };
| + | |
| − | | + | |
| − | call_user_func($saludar, "Manuel");
| + | |
| − | | + | |
| − | ?>
| + | |
| − | </source>
| + | |
| − | | + | |
| − | ===Funciones flecha===
| + | |
| − | *Las funciones flecha es una forma más corta de escribir funciones anónimas simples
| + | |
| − | Aparece en php en la versión 7.4
| + | |
| − | *Limitaciones de funciones flecha.
| + | |
| − | #
| + | |
| − | </div>
| + | |