martes, enero 05, 2016

Checklist para crear tu paquete PHP (composer)

Es un buen recurso para revisar a la hora de crear un paquete PHP que quieras distribuir por composer, una lista de puntos a tener en cuenta que deberías cumplir antes de publicarlo:



Cito algunos puntos:
  1. Elige un nombre sabiamente: revisa antes que no exista el nombre en el listado de paquetes, no uses tu nombre o apellido para usarlo en el nombre. 
  2.  Autoloader friendly: usa el estándar PSR-4 para hacer funcionar el autoloader en tu paquete, y coloca el código en la carpeta /src/
  3. Distribuye via Composer: si vas a hace un paquete, y quieres que sea público y lo puedan usar en otros proyectos, utiliza Composer.
  4. Sé Framework Agnostico: no limites tu proyecto / paquete a un solo framework.
  5. Sigue un estilo al codificar: utiliza estándares como PSR-2, donde especifican un estilo de codificación aprobado por la PHP-FIG (The PHP Framework Interop Group).
La lista completa sigue, hace referencia a que escribas test unitarios, no te olvides de la documentación en el código con DocBlock, agrega documentación extra, también un changelog, incluir un tipo de licencia, etc.


viernes, diciembre 25, 2015

Frase: "Para algunos autores, la herencia o las clases no son conceptos esenciales para la paradigma de POO"


Frase leída en Wikipedia sobre el lenguaje "Go" de Google:


Resultado de imagen para alan kay
Alan Kay
"Para algunos autores, la herencia o las clases no son conceptos esenciales para la paradigma de POO, sino más bien un medio de implementación. Existen desde hace tiempo lenguajes orientados a objetos que no admiten clases, sino que se basan en prototipos, como Javascript o Self. Según declaraciones de Alan Kay, creador de Smaltalk, lo esencial del paradigma es el paso de mensajes.6



Lenguaje Go
Go tiene tipos y métodos y permite un estilo de programación orientado a objetos, pero no admite construir jerarquías, es decir, no admite la herencia, que para otros autores sí es un mecanismo esencial de la POO. En Go, el concepto de “interfaz“ es similar al usado en Java: cualquier objeto (value) que cumpla el contrato especificado por una interfaz (sin necesidad de una declaración explícita) obtiene ese tipo. También existen formas de embeber tipos dentro de otros tipos para obtener algo análogo a las subclases. Los métodos de Go son más generales que los de C++ o Java, pueden ser definidos para cualquier tipo de datos no sólo para los registros."

Para los que estamos en la POO desde hace muchos años, da para pensar, no? 

martes, diciembre 01, 2015

Disponible PHP 7.0.0 RC 8

Desde el 26 de Nov pasado está disponible oficinalmente un nuevo Release Candidate, lo que deja ver que en breve tendremos la versión final disponible.

Cito el anuncio:

PHP 7.0.0 viene con una nueva versión del motor Zend con características tales como (lista incompleta):


  • Rendimiento mejorado: PHP 7 es hasta dos veces más rápido que PHP 5.6
  • Soporte consistente de 64 bits 
  • Muchos errores fatales son ahora Excepciones 
  • Se remueven SAPIs y extensiones antiguas y no compatibles 
  • Se agrega el operador "null coalescing" (??) 
  • Se agrega el operador "comparación combinada" (<=>) 
  • Se agrega tipo de retorno "Declarations"
  • Se agrega "Scalar Type Declarations" 
  • Clases anónimas
Saludos! 

Más info


lunes, julio 13, 2015

Jugar con PHP7, el camino facil

Para quienes ya quieren empezar a probar PHP7 sin grandes complicaciones y de forma segura, a través de koding.com






martes, marzo 05, 2013

El GOTO en PHP

En sí, hace muchos años que dejé de usar un goto cuando se prohibieron (hace casi 25 años aprendí a programar usando BASIC y GOTO, y posteriormente viví la evolución que llevó la prohibición del GOTO) y me sorprendió cuando lo revivieron de forma reciente en PHP 5.3.0, pero bueno, sigo la "vieja escuela", aún me parece innecesario y muy peligroso usar un goto... de todas formas no es tu culpa que ahora lo uses (aunque como regla, no todo lo que exista en el lenguaje, necesariamente es 100% recomendable usar para un buen diseño general o para POO en concreto).


Agrego más info sobre el GOTO, de casualidad llegué hoy leyendo otros temas: 
Cito biografía de un grán científico de la computación: "Respecto a su carácter árido y ácido, conocidas son su oposición a la instrucción GOTO y al lenguaje BASIC ("mutila la mente más allá de toda recuperación")."
Cito: "A diferencia de la llamada a una función, no se requiere ningún tipo de preparación o estructura de código para utilizar un GOTO. Como resultado, es más sencillo obtener código inconsistente, incompleto o complicado de mantener. Justamente por ello en los años 60 y 70, cuando surgió la programación estructurada, la comunidad informática se expresó a favor de otras instrucciones de control (if ó bucles for y do/while) en lugar de GOTO.
Tal creencia está tan arraigada que el GOTO es muy criticado por los dedicados a la enseñanza de la programación, que lo suelen desaconsejar."
Esto es otra demostración el caos que en muchos sentidos existe en el lenguaje PHP, que luego de tantos años, ahora, agreguen otra vez el GOTO!!! ;-) 
Saludos! 

Instalar PHP 5.4 en Ubuntu 12.04

Como no es la primera vez que me lo preguntan, lo dejo documentado aquí, de todas formas, no es complicado hacerlo:

sudo add-apt-repository ppa:ondrej/php5

sudo apt-get update

sudo apt-get install php5


Y listo, luego verifica en consola con un php -v ó un phpinfo() desde apache



Problemas: Si falla el xdebug luego de ejecutar php -v

Failed loading /usr/lib/php5/20090626+lfs/xdebug.so:  /usr/lib/php5/20090626+lfs/xdebug.so: 
cannot open shared object file: No such file or directory

PHP 5.4.12-1~precise+1 (cli) (built: Feb 25 2013 17:23:55) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

Hay que corregir la instalación de xdebug, ya que cambió el lugar donde se encuentra la librería xdebug.so

Pasos

Actualiza la base que te permite encontrar la ubicación de tu archivo (si haces un locate sin actualizar, te dirá una ubicación vieja)


sudo updatedb

Cuando termine de indexar, realiza la búsqueda de la librería

locate xdebug.so

Edita el archivo de configuración para ajustar la nueva ruta en

sudo vim /etc/php5/mods-available/xdebug.ini

agrega tu ruta actualizada, en este caso sería 

zend_extension=/usr/lib/php5/20100525+lfs/xdebug.so

Finalmente, ejecuta php -v 


PHP 5.4.12-1~precise+1 (cli) (built: Feb 25 2013 17:23:55) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans

Listo, ya no falla xdebug! ;-) 

Saludos! 

jueves, diciembre 20, 2012

Zend Framework 1 no está muerto, se sigue actualizando!

Recientemente actualizada la rama 1 a la versión 1.12.1, la que incluye más de 50 correcciones, entre ellas, además de fallos, varios problemas de seguridad importantes, relacionados con:
  • correcciones de seguridad en Zend_Feed_Rss y Zend_Feed_Atom
  • se sube el mínimo de versión requerida de PHP:  5.2.11
  • Se elimina Zend_Markup_Parser_Textile
El plan de actualización, mejoras y soporte se mantendrá hasta el año 2014
Se puede hacer un seguimiento de todo lo que se está trabajando a través del issue tracker

Fuente: akrabat.com

viernes, noviembre 16, 2012

Disponible nueva versión para testear: PHP 5.5.0 Alpha1

Anuncia el equipo de desarrollo de PHP que se encuentra disponible para testear la versión 5.5.0alpha1 y con esto, marcan el inicio del ciclo de desarrollo de la rama 5.5.0. Avisan que tengan cuidado ya que es una versión de pruebas, no es para usar en producción, e invitan a reportar los bugs que encuentren.

Las nuevas características (lista no completa) son:
  • support for Generators,
  • a new password hashing API,
  • support for finally in try/catch blocks
  • support for list() in foreach,
  • constant array/string dereferencing,
  • ext/intl improvement.
Me parece muy interesante que ya hayan agregado la opción "finally" en los try/catch (tarde, pero llegó). Para quienes hayan trabajando en Java, sabrán que todo lo que está en try, si falla, pasa a la lista de catch (como si fueran reglas de un firewall), y sí o sí, cierra con la ejecución del código que hay en finally (ej, ya que tu sistema cayó por algo, te aseguras de hacer un cierre limpio, sin importar el tipo de error).

Indispensable. ;-)

Fuente: 
PHP 5.5.0 Alpha1