Disculpen el título. Nel, ni se que dije.
Bueno... aquí traigo otra de las cosas locas -y divertidas- que me laten de PHP, ya me dirán.
Trabajando un poco en un proyecto que tengo alojado en mi cuenta de GitHub quise darle la vuelta a un problema especifico: diseñar una API que fuese amigable y divertida a la vez, desde luego me refiero al lenguaje mismo y no más.
Así pues descubrí que dos conceptos pueden existir bajo el mismo nombre, y hablo en serio:
function foo()
{
}
class foo
{
}
¿Y que chingados con eso?
Pues eso, de alguna extraña forma php permite nombrar de la misma manera una función y/o clase. Esto evidentemente nos brinda la posibilidad de escribir una serie scripts de diversa índole bajo el mismo "namespace" o algo parecido.
Vamos a imaginar una librería para manejar sesiones:
session_start();
class session
{
public static function fetch($item)
{
return $_SESSION[$item];
}
public static function assign($item, $value)
{
$_SESSION[$item] = $value;
}
public static function remove($item)
{
unset($_SESSION[$item]);
}
}
function session($item, $value = NULL)
{
if (func_num_args() === 1)
{
return session::fetch($item);
}
elseif (is_null($value))
{
session::remove($item);
}
else
{
session::assign($item, $value);
}
}
En mi experiencia esto facilita las cosas de una forma sumamente agradable y consistente, si no me creen hagan la prueba.
¡Diviertanse!
2 comentarios:
para eso php nos proporciona el metodo magico __invoke que es mucho mas limpio que una funcion fuera de la clase, este metodo permite tratar al objecto como una funcion
Tal vez lo haga asi, por que toma a dicha funcion con su mismo nombre como su constructor
Publicar un comentario