5 cosas que no sabías hacer con PHP

Por el 8 de Diciembre de 2006

en: Programacion

A menudo cuando un desarrollador comienza a programar en Php, se siente que ha encontrado la herramienta perfecta para el rápido desarrollo de sitios webs dinámicos, incluso tiempo atras en el que que las características del lenguaje y la cantidad de funciones eran más escasas. De un tiempo a esta parte el lenguaje a añadido extensiones y una gran popularidad. Desafortunadamente esto hace que para nuevos programadores sea mas dificil comprender algunos conceptos de este lenguaje.
Te recomiendo que si tu has estado buscando alguna funcion o funcionalidad y no lo has encontrado eches un vistazo a esta lista de 5 cosas que no puedes hacer con PHP.

1. Probar un rango de valores usando Switch

La condición switch es realmente útil, pero hay situaciones en las que este tipo de situaciones estan limitadas. El switch es usado para probar si una variable es equiparable a un determinado valor, algo como esto:

switch ($grado) {
case ‘A’:
echo ‘Excelente!’;
break;
case ‘B’:
echo ‘Buen trabajo.’;
break;
case ‘C’:
echo ‘Estudia más.’;
break;
}

¿Pero puedes hacer que switch compare rangos de valores?
El truco es usar switch no para comparar una variable contra un valor, sino una variable contra un valor booleano TRUE o FALSE:

switch (TRUE) {
case ($edad < 16):
echo 'No puedes conducir.';
break;
case ($edad < 18):
echo 'No puede votar.';
break;
case ($edad < 21):
echo 'Estudias y no tienes casa.';
break;
case ($edad > 65):
echo ‘Debes jubilarte del trabajo.’;
break;
default:
echo ‘Trabaja,trabaja,trabaja…’;
break;
}

Mientras intentas entender como funciona, puedes usar este ejemplo y aplicarlo a otras situaciones, a partir de ahora debes pensar como utilizar la condicion switch observándola desde esta perspectiva.

2. Hacer que print_r() devuelva los resultados en lugar de imprimirlos

Espero que estes familiarizado con el uso de print_r(): esta funcion imprime variables tanto el tipo como el valor. No parece gran cosa pero es una potente herramienta de depuración de errores. Un simple ejemplo:

$albums = array (‘Amaral’, ‘Estopa’, ‘Greenday’);
print_r ($albums);

…como resultado

Array ( [0] => Amaral [1] => Estopa [2] => Greenday )

En la version 4.3 de PHP – La mayor actualización del lenguaje – tambien tienes la opción de capturar la salida de print_r(). La funcion toma un segundo parametro para este propósito. Usando el array definido anteriormete, se haría así:

$capture = print_r ($albums, 1);

3. Manejar tus errores

El resumen de errores programado por PHP ciertament no es de lo mejor. EL famoso “headers already sent” o “call to undefined function” que te aparece en negrita y con un número de línea que puede o no puede ser correctos.

Pero puedes programar tu propio manejador de errores.s:

function mis_errores ($numero, $mensaje, $archivo, $linea) {
// Añade el CSS para tu codigo
echo ‘

El siguiente error ocurrio en linea ‘ . $linea . ‘ del archivo ‘ . $archivo . ‘: ‘ . $mensaje . ‘
‘;
echo ‘

Las actuales variables son:

‘ . print_r($GLOBALS, 1) . ‘

‘;
}

Entonces usarás tu propio manejador por defecto y no el de PHP diciendoselo a PHP en la funcion set_error_handler().

set_error_handler(‘mis_errores’);

Entonces ya la mayoría de los errores seran manejados por tu función (pero hay algunas excepciones). Con el anterior ejemplo los errores son imprimidos con formato html.

Deberia incluso plantearte la posibilidad de enviar estos errores via mail con la funcion mailto y de esta manera tendras un control en tiempo real de tu sitio, o incluso manejar errores en la conexión a una base de datos.

try {
if (!@mysql_connect(‘localhost’, ‘username’, ‘password’))
throw new Exception (mysql_error());
} catch (Exception $e) {
echo ‘Imposible conectar a la base de datos: ‘ . $e->getMessage();
}

Por supuesto estos son ejemplos muy básicos; hay muchas más funcionalidades que le puedes añadir.

4. Búsqueda rápida de un directorio

Si eres un veterano desarrollador de PHP alguna vez habrás programado un album de fotos y habrás necesitado localizar todas las imágenes disponibles de un directorio por ejemplo o quizas los archivos txt porque ellos almacenan datos relecantes para tu aplicación.

Cualquiera de los casos requiere el uso de la función opendir(), habrás utilizado readir() en un bucle, y finalmente closedir(). En el interior del bucle debes utilizar un expresión regular para asegurarte de que cada archivo sea el correcto. Pues hay una manera aún más sencilla…

Esta función encuentra archivos que se rigen por un mismo patrón, si por ejemplo quisieras buscar imágenes:

$dir = ‘./imagenes/personales/directorio’;

// Imagenes a buscar.
$files = glob (“$dir/{*.jpg,*.jpeg,*.gif}”, GLOB_BRACE);

// Confirmar que ha sido incluido el patron.
if (is_array($files)) {

// Bucle.
foreach ($files as $image) {
echo “$image
\n”;
}

} else {
echo ‘No han sido encontradas imagenes’;
}

Hay muchas otras constantes aprate de GLOB_BRACE que puedes usar para devolver archivos pero devilverian resultados desordenados o solo el nombre del directorio.

5. Limpiando tu HTML

HTML Tidy es un pequela utilidad para desarrolladores web. Esta utilidad analiza las páginas HTML y te ayuda a:

* Encontrar errores HTML
* Limpia el desorden creado por el IDE
* Mejora la accesibilidad de tus paginas
* Comprime el codigo y mejora el tiempo de descarga
* Etc…

HTML Tidy esta creciendo y empieza a ser incluido en numerosas aplicaciones.

Fuente en Inglés:
Five Things You Didn’t Know You Could Do with PHP

22 Respuestas a 5 cosas que no sabías hacer con PHP

Avatar

Anónimo

9 de Diciembre de 2006 a las 8:24 am

Hola, muy bueno el blog, cosas muuuuy interesantes. Blogs como este hay poquitisimos, y la mayoria en ingles.

En fin, buen trabajo!

Podrias conseguir algun articulo sobre optimizaciones en SQL?

Saludos, Eugenio

Avatar

Anónimo

14 de Diciembre de 2006 a las 1:59 pm

publica algo relevante ps man, funciones en php para jalar datos de las tablas

Avatar

Anónimo

24 de Enero de 2007 a las 12:59 am

uo

Avatar

Anónimo

2 de Febrero de 2007 a las 3:39 pm

me gusto bastante elte blog espero encontrar mas de estos especialmente sobre la creacion de funciones, por rjrmplo para que sirven, como se usan?, y todas esas cosas que uno cree saber pero realmente no se ha dado de cuenta de su gran magnitud
ivans67@hotmail.com

Avatar

Alberto Ferrer

17 de Febrero de 2007 a las 9:25 am

Es “Que no sabias ahcer con php5″ ya que php4 no permite modificar los falta.

Avatar

Edwincito

21 de Abril de 2007 a las 10:15 pm

me gusto eso de manejar errores, edito algunas paginas de manera directa con el servidor y no me muestra errores seguro es una configuracion probare con el codigo a ver si puedo ver los errores =D y trabajar mejor =)

Avatar

Cara de Cocou

7 de Mayo de 2007 a las 6:03 pm

Ay, la verdá es que me pareció fantasmidable, toda esa exuberación de ingeniosidad que aporta el código.
Hay también unos comentario poco buena onda de unos tipo que no tienen respeto por nadas y ni por nadies. Seguro que ahora le faltan el respeto a esta pobre dama indefensa…
Despué me vienen a decir que aca no hace falta el servicio militar, me vienen a decir. vos podes creer, el otro dia que yyyyyyyyyyyyyyyyyyyyy!!!!!!!!!!!!

unas verdaderas felicitaciones, para los que piensen que y no de que.
Felice fiesta, de esas que se usan ahora… San Valiente, Jalouin, y esas yerbas yanqui que no se la tragan ni ello, pero ahora los chico festejan porque son como las modas viste, un tiempo se usan pelucas, despue se festeja el jalouin, despues dejas de usar PHP porque es una porquería y te pasas a Java si sos inteligente y te da para entender lo que estás programando, son modas algunas pasajeras, otras pajeras y otras no.

Saludos y perdon si me extendí demasiado. Mushos Bexios muac, chuic chuic

Avatar

marcos

25 de Junio de 2007 a las 6:14 am

Quisiera saber donde he de colocar la funcion para poder personalizar los errores, en una carpeta propia del servidor o he de modificar el php.ini o que…. donde se pone?

La linea que llama a la funcion se ha de coloar en cada página de código o dondeç

Gracias por vuestra ayuda.

Marcos
marcos@esdecos.com

Avatar

Omishe

1 de Julio de 2007 a las 10:27 pm

Muy buenos consejos, llevaba tiempo buscando por donde comenzar a tratar los errores que marca php.

Felicidades!!!.

Avatar

rsa

24 de Diciembre de 2007 a las 11:17 am

Primero que nada los felicito por el website lo veo bastante completo, pero tengo una duda y espero me puedan ayudar, quiero poder capturar fotos en tiempo real a traves de una webcam con php como controlador del evento de captura.

Por ejemplo: cuando exista una entrada de informacion como un codigo de un IDcard la camara capture la foto de la persona. claro en la pagina estaria un cuadro o un marco que muestre lo que la camara esta enfocando, espero haberme explicado y que ustedes me puedan ayudar, gracias de ante mano.

Avatar

RST

26 de Julio de 2008 a las 2:48 pm

HOLA AMIGO ME PUEDES AYUDAR EN UN CODIGO PARA QUE MIS USUARIOS PONGAN COMNETARIOS A CADA FOTO RESPECTIVAMENTE

UN
AMIGO
RST

Avatar

emanuelweb

5 de Enero de 2008 a las 8:33 am

HOLA, TENGO UN PROBLEMITA, QUIERO COMPARAR UN AVARIABLE CONTRA UNA LISTA SEPARADA POR COMAS Y NOSE COMO SE HACE EJEMPLO:

$PROMOS=”3,6,9,12,15,18,21″;

tengo un loop de 1 a xx

cada vuelta debo saber si

if()$contador = $promos

hago una cosa

sino otra

Avatar

EL MACHO NEGRO

18 de Marzo de 2008 a las 11:38 pm

Te agradezco mucho tu esmero por compartir el conocimiento que vaya a saber Dios cuanto esfuerzo te ha costado. A mí me resulta muy útil y claro tu sitio. Te mando un gran saludo desde Santa Fe, Argentina.

Avatar

Anónimo

22 de Noviembre de 2007 a las 6:47 pm

como realizo que se me genere el numero siguinte de mi tabla alumnos por ejemplo
tengo el cqampo idalumno=a-001 y que se me genere automaticamente idalumno=a-002

Avatar

jaz

11 de Diciembre de 2008 a las 12:08 am

hola tengo un pequeño proplema tengo que hacer una pagina en donde un usuario teclee una cantidad y que cuando le de guarda me aparesca otra pagina que me diga los billetes que utiliso para llegar a esa cantidad
ya tengo la pagina principal con un combo pero la otra endonde lo va aguardar no me que da … este es mi codigo de la pagina 2

< ?php
$Sql = "insert into cantidad (cantidad)";
$Sql = $Sql . " values('" . $_POST["cbocantidad"] . "',";

mysql_query($Sql,$link);

switch (TRUE) {
case ($cantidad <= 100):
echo '1 BILLETE DE 100.';
break;
case ($cantidad <= 150):
echo '1 Billete de 100 y uno de 50.';
break;
case ($cantidad < = 200):
echo ' 2 Billtes de 100 .';
break;
case ($cantidad <= 250):
echo '2 Billetes de 100 y uno de 50.';
break;
default:
echo 'Los Billtes que Utilizaste fueron.';
break;
}

echo "“;
echo ““;
?>

me podrian ayudar gracias de antemano

Avatar

Anónimo

12 de Julio de 2008 a las 2:34 pm

He encontrado algunas de sus respuestas y las pueden encontrar aqui:

http://www.gratisweb.com/alelacayo

Saludos

Alexa

Avatar

Jose Vela

24 de Julio de 2008 a las 6:15 pm

En php hay una instruccion llamada in_array($var_a_buscar,$array) devuelve un booleano true o false.

prueba con eso.

if ($var==true) { tus instrucciones }

Avatar

Jose Vela

24 de Julio de 2008 a las 6:26 pm

//crea el arreglo, notese que el array empieza en cero
$promos = array (0=>3,4,5,8,9,10,11,12,17,18,19,20,24,26);

//compara tu variable contra el arreglo
if (in_array($var,$promo)) echo ’si esta’; else echo ‘no esta’;

Espero que te sirva, si tienes dudas escribeme
pp_vela@hotmail.com

Avatar

Anónimo

9 de Julio de 2008 a las 2:48 pm

esto ya lo habia visto publicado en otra parte ,

es puro copiar y pegar.

igual es un aporte, pero mencionen al creador por ultimo.

Avatar

el mismo de recien

9 de Julio de 2008 a las 2:51 pm

y respondan los post, que para algo fueron creados.

la gente no esta para perder el tiempo en paginas desactualizadas y sin interes en los q navegan en ellas.

aunque creo q esto ni siquiera lo leeran , igual se los digo por si alguien se interesa…….

Avatar

Mattias

14 de Mayo de 2009 a las 10:49 am

Hola, yo ando necesitando lo mismo, pudiste encontrarle una solucion?

Avatar

Pep

9 de Noviembre de 2009 a las 10:56 am

Muy interesante el articulo.

Dejar un comentario

Patrocinadores

¿Interesado en patrocinar TuFunción?

Suscripción

Primera División