Saltar al contenido Navegación Ir a buscar

Actualizaciones ocasionales en inglés, mayormente sobre programación, ocasionalmente de fútbol.

Programar en PHP

Hace unos días, uno de los colaboradores más activos de Textpatern de cuantos hablan la lengua de Cervantes preguntaba, al hilo de la recomendación del libro de Ruby, por algún recurso on-line sobre PHP.

La respuesta es sencilla: el Manual de PHP – en inglés, que la versión en castellano suele tener el desfase temporal lógico de tener que esperar a tener la documentación en inglés para poder traducirla.

La cuestión es que he estado pensando en qué otros manuales, preferiblemente on-line, podría recomendar, y no se me ocurre ninguno. De hecho, creo que no he leído más que el manual, y es más que suficiente, siempre y cuando ya se sepa programar en algún otro lenguaje.

Libros un poco más avanzados

¿Libros?, bueno, mis recomendaciones irían más a cierto tipo de libros destinados a gente que no está empezando precisamente, y que tratan todos esos temas sobre PHP que la gente se suele dejar en el tintero y que, sin embargo, si que se incluyen en manuales de otros lenguajes de programación.

En concreto, merecen mención especial para mí los libros PHP Obects, patterns and practice de Matt Zandstra – del que hablaré largo y tendido antes o después – y la guía de PHP Unit, PHP Unit Pocket Guide, de Sebastian Bergmann, que se encuentra disponible para ser consultada on-line – aunque insisto una vez más en que si os gusta el libro, deberíais contribuir a que Sebastian lo mantenga actualizado y continúe desarrollando el que es, siempre para mí, el mejor paquete de PEAR, que debería estar incluido por defecto en PHP.

Para quienes empiezan: Programming PHP, 2nd Edition

Hay bastantes libros de PHP, ¿por qué precisamente éste?. En primer lugar, porque cumple su función de enseñar a programar en PHP, que es el objetivo que perseguimos.

En segundo, y más importante para mí, porque su principal autor es Rasmus Leedorf – exacto, el creador de PHP – y el libro es capaz de mostrarnos el modo de pensar subyacente al lenguage de programación que mejor ha sido capaz de adaptarse a la web.

Recalcar que, aunque algunas veces no merece la pena comprar la última edición de un libro, en este caso es prácticamente obligado, ya que se trata de la edición que cubre PHP5 y, puestos a aprender, estoy seguro de que nadie quiere empezar con el mantra de “Compatibilidad hacia atrás” martilleando en la cabeza.

Hay que tratar de aprender de verdad y ser estrictos con el código que escribimos.

Cosa que se da por supuesta …, ¡nahhh!.

Ayer me pasé 3 horas tratando de usar un plugin de Textpattern; horas en las que me dediqué, por completo, a corregir código que, habiendo recibido un poco más de cariño, funcionaría perfectamente.

La cuestión es que todas, absolutamente todas las mejoras que necesitaba, estaban en el manual de PHP, y se trataba, exclusivamente de leer con atención. A saber:

Las variables, en PHP, se pueden emplear sin asignar, pero si no se asignan, hay contextos en los que dan problemas, lanzando errores del tipo E_USER_NOTICE.

A mi modo de ver, y considerando el trabajo que cuesta definir una variable, es un lujo innecesario no hacerlo. Más si pensamos que en futuras versiones – o si nos ponemos E_STRICT – lo que ahora es un aviso, puede pasar a ser un error y, lo que es simple dejadez de un momento, pasa a ser un problema del que conocemos nombre y apellidos del responsable.

Además, como las variables se pueden emplear antes de asignar, para comprobar su valor, es conveniente tomar ciertas precauciones. Por ejemplo, suponiendo que tengamos un array $myarr:

Esto dará problemas:

if($myarr['foo']){...}

que podríamos evitar, simplemente, comprobando si la variable está fijada:

if(isset($myarr['foo']) && $myarr['foo']){...}

Del mismo modo, se pueden evitar otro gran número de mensajes E_USER_NOTICE si, en lugar de fijar una variable sólo si se cumple una condición, fijarla a la vez a su valor nulo, vacío o falso en caso contrario. Es decir, en lugar de emplear:

if($condition){$myvar = 'something';}

emplear el método reducido del condicional:

$myvar = ($condition)?'something':'';

De hecho, creo que he escrito exactamente los mismos caracteres ;-).

En resumen, con lo poquito que cuesta, merece la pena prestar atención a los detalles.

29/10/06 11:00 p.m.

  1. Buena entrada, me apunto la referencia del libro por si me entran las ganas de aprender php. ;)


    corsaria    05/11/06 09:44 a.m.    #
  2. ¡Creo que soy el destinatario de este artículoo!

    Lo fuera o no, agradezco una vez más al autor por brindar sus conocimientos públicamente.
    Ya pasaron unos días desde el post, pero debido a algunos problemas computadoríferos, estuve atrasado con la lectura de mis sitios favoritos ;)

    Voy a comenzar con el manual, aunque no cumplo con el requisito de “saber programar en un lenguaje previamente…”.
    Entre el manual oficial, el manual de Hudzilla, algún librito y mucho Google, algo tengo que aprender.

    Y claro que quiero aprender de verdad!
    Difícil que llegue a ser el mejor, pero espero por lo menos, hacer las cosas bien, y quizá llegar a ser bueno en esto.

    Curiosidad indiscreta:
    ¿cuál era el plug-in problemático?


    Maniquí    20/11/06 06:39 p.m.    #
  3. Ningún plugin, dependiendo del host y de la versión de PHP, la función gethostbynamel devuelve una cadena vacía cuando debería devolver false.

    Divertido, ¿no?

    Y sí, eras tú ;-)


    Pedro    20/11/06 07:15 p.m.    #