Pregunta:
Fecha: 02-06-2018 15:00:16
(En Español)
En esta oportunidad les comparto un mini desafío que es el siguiente.
Algunos jugando aprenden.
Deja tu respuesta en un comentario.
En el transcurso del domingo se dejará la respuesta del juego
Saludos. Votos: 4 - Respuestas: 6 - Vistas: 14 Compartir en: Google Facebook Twitter LinkedIn Link
Fin de semana lúdico con PHP (Participa en este simple juego)[Resuelta]
Hola a todo.En esta oportunidad les comparto un mini desafío que es el siguiente.
Algunos jugando aprenden.
Deja tu respuesta en un comentario.
En el transcurso del domingo se dejará la respuesta del juego
Saludos. Votos: 4 - Respuestas: 6 - Vistas: 14 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 02-06-2018 15:43:34 Hola, genial la prueba, yo lo haría así:
$saludo = function($X=null){ if($X==null){ return "Disculpe no se ha enviado información"; } return "Hola ".$X; }; echo $saludo(); //Imprime: Disculpe no se ha enviado información echo $saludo("PHP Central"); //Imprime: Hola PHP Central echo $saludo("Participante"); //Imprime: Hola Participante echo $saludo("Carlos Quintero"); //Imprime Hola Carlos Quintero echo $saludo; //Imprime: Recoverable fatal error: Object of class Closure could not be converted to string in XXX
Saludos Votos: 4 - Link respuesta -
Fecha: 02-06-2018 16:06:49 Muchas gracias Carlos por participar a este mini desafío del juego proporcionando un codigo legible y explicado.
Dejo el link en PhpFiddle con tu codigo para quienes quieran ejecutarlo y hacer pruebas.
Espero que alguien más partícipe exponiendo su solución al reto.
Que tengas un buen finde Carlos.
Saludos Votos: 4 - Link respuesta -
Fecha: 03-06-2018 15:17:25 Dando por terminado este desafío.
Agradezco a Carlos quien ha sido el único que ha aceptado y resuelto el desafío planteado.
Código:
<?php $saludo = function($nombre = null){ return 'Hola '.$nombre . PHP_EOL; }; echo $saludo('PHP Central'); // Imprime: Hola PHP Central echo $saludo('participante'); // Imprime: Hola participante echo $saludo(); var_dump($saludo);
El tema trataba funciones anónimas en PHP. Las funciones anónimas están implementadas utilizando la clase Closure.
Fernando había realizado un aporte en la comunidad sobre CLOSURE / Funciones Anónimas en PHP.
Si desean puede aportar algo extra en los comentarios.
Muchas gracias.
Saludos Votos: 3 - Link respuesta -
Fecha: 04-06-2018 08:41:26 Uff muy bueno!!!
Llegué tarde pero aqu;i está mi grano de arena:
También puedes hacerlo utilizando closures. El siguiente ejemplo te da idea del poder del concepto.
<?php declare(strict_types=1); /** * Saluda/Despide a alguien * * @param string $salute * * @return Closure */ function politeFunction(string $salute = '') { return function (string $who = 'Mundo') use ($salute) { echo "{$salute} {$who}"; }; } $saludo = politeFunction('Hola'); $despedida = politeFunction('Bye'); echo $saludo(); echo $saludo('PHP Central'); //Imprime: Hola PHP Central echo $saludo('Participante'); //Imprime: Hola Participante echo $despedida('PHP Central'); //Imprime: Bye PHP Central echo $despedida('Participante'); //Imprime: Bye Participante
Votos: 3 - Link respuesta -
Fecha: 07-06-2018 15:01:34 Ernesto No has llegado tarde, todos los aportes son muy bien recibidos ya que muchos aprendemos de ellos.
Muy interesante tu resolución, lo probare. +1
Si puedes explicar el codigo seria genial para quienes comienzan ;)
Saludos Votos: 1 - Link respuesta -
Fecha: 07-06-2018 17:13:22 Hola a todos
Para darle un sentido práctico de las funciones anónimas presentare el siguiente ejemplo sencillo a modo ilustrativo. Con todos los códigos para quienes recién comienzan con POO puedan tomarlos y hacer sus propias prácticas.
Si has trabajado con programación orientada a objetos en PHP y eres un poco ordenado seguramente crearás un fichero independiente para cada una de las clases. Es la opción más recomendable. Sin embargo ello te obligará a utilizar de forma reiterada la función require_once() o similar para cargar cada una de las clases en los distintos ficheros de tu proyecto, lo cual resulta tedioso y desorganizado.
Para resolver este problema utilizaremos la carga automática de clases con spl_autoload_register().
No se utilizara namespace para que sea más simple de entender.
Supongamos que tenemos una carpeta (Directorio) llamada Ejemplo dentro de ella otra carpeta llamada Clases que contiene los siguientes archivos.
Archivo: Persona.php
<?php class Persona { static public function mostrar( $mensaje = 'Cri cri') { echo 'La persona dijo: '.$mensaje.'<br/>'; } }
Archivo: Sistema.php
<?php class Sistema { static public function mostrar( $mensaje = 'Ups') { echo 'El sistema dijo: '.$mensaje.'<br/>'; } }
En la carpeta raíz Ejemplo contiene el siguiente script que hace es la carga automática de clases .
Archivo: index.php
<?php function autoload($clase){ require_once 'Clases/'.$clase.'.php'; } spl_autoload_register('autoload'); Persona::mostrar('Hola'); Sistema::mostrar('Bienvenido');
Hasta aquí nada novedoso.
Ahora si utilizaremos una función anónima en el archivo index.php dentro de spl_autoload_register()
<?php // Carga automática de clases con función anónima spl_autoload_register(function ($clase){ include 'Clases/'.$clase.'.php'; }); Persona::mostrar('Hola'); Sistema::mostrar('Bienvenido');
Como resultado en pantalla sería:
La persona dijo: Hola
El sistema dijo: Bienvenido
Compartido en GitLab
Espero que sirva de algo el ejemplo.
Si alguien tiene alguno otro uso práctico de las funciones anónimas con codigo es bienvenido.
Saludos Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión