Symfony, ¿dos o cuatro espacios?

Sábado, 8 de Mayo de 2010

Fabien Potencier, creador del framework Symfony, anunció hace dos días la modificación de las normas de escritura (coding standards) del código fuente de Symfony 2. De esta forma, Symfony abandonará su propio estilo de programación para adoptar el estilo estandarizado por PEAR y Zend Framework.

El primer cambio importante ha sido el commit 83c6d337e2fa0b309e8a de github, mediante el que los dos espacios en blanco de tabulación se sustituyen por cuatro espacios en blanco. Como era de esperar, muchos programadores han mostrado su disconformidad con el cambio y sugieren volver a los dos espacios en blanco o utilizar tabuladores.

El propio Fabien ha intentado explicar su decisión mediante comentarios en twitter y github:

“Sólo se trata de adoptar un estándar. A mí tampoco me gusta [el nuevo estilo de programación] pero a la hora de la verdad no es un tema tan importante. (fuente)

“Soy el primero al que no le gustan nada ni los cuatro espacios ni las llaves puestas de esa forma. Pero en serio, no es algo tan importante. Creo que es lo mejor para Symfony y por eso lo hacemos” (fuente)

Después de los cuatro espacios, el siguiente paso será corregir la posición de las llaves de apertura de las sentencias de control (algo que ya se ha añadido en el fork de Symfony de Fabien).

Para los más curiosos, el siguiente comando es el que utilizó Fabien para reemplazar los dos espacios por cuatro en todo el código fuente de Symfony:

find src/ -name '*.php' | xargs perl -p -i -e 's#^((?: )+)#$1$1#mg'

Modificar la posición de las llaves de apertura ha sido un poco más complicado, ya que los comandos utilizados han sido los siguientes:

// replacing in all php files
for i in `find . -name *.php`; do sed -i -r -n '1h;1!H;${;g;s/(\n {8,}(if|else|else ?if|foreach|for|while|do|switch|try|catch) ?[^\r\n]*?) *?[^{a-z0-9$]+?\{([^ ]*)/\1 {\3/g;s/(\n {8,})\}[^}a-z0-9$]+(else|else ?if|while|catch)/\1} \2/g;p;}' $i; done

// checking php linter doesn't report errors (it does in some code templates, but if you check with a clean checkout the errors were already there before)
for i in `find . -name *.php`; do php -l $i 1>/dev/null; done

// dump the diff and filter out irrelevant lines so it's easier to scan because it's freakin' big :)
git diff | grep '^[+-] ' > changes.diff
3 comentarios »

sfLive2010: Todas las presentaciones de la conferencia

Miércoles, 17 de Febrero de 2010

La conferencia Symfony Live 2010 ha llegado a su fin y ya se empiezan a publicar las presentaciones de las 20 sesiones celebradas. A continuación se muestra el listado de enlaces a todas las presentaciones:

Primer día:

Segundo día:

2 comentarios »

sfLive2010: Symfony 2 incluirá componentes de Zend Framework

Miércoles, 17 de Febrero de 2010

Se acaba de hacer oficial una de las sorpresas anunciadas durante la primera jornada del Symfony Live 2010: Symfony 2 utilizará en su código fuente algunos componentes del Zend Framework.

Matthew Weier O’Phinney, máximo responsable del Zend Framework, acaba de confirmar en su blog que Symfony 2 hará uso de Zend_Cache y de Zend_Log en vez de reescribir los respectivos componentes de Symfony 1.X.

Además de ser un magnífico ejemplo de colaboración entre dos de los frameworks PHP más importantes, esta decisión permitirá que los creadores de Symfony se centren en intentar crear el mejor framework de PHP y se olviden de desarrollar componentes similares a los ya existentes en otros frameworks.

4 comentarios »

sfLive 2010: Integrando Zend Framework con Symfony

Miércoles, 17 de Febrero de 2010

Matthew Weier O’Phinney, máximo responsable del Zend Framework, ha impartido una charla sobre cómo integrar los componentes de Zend Framework en las aplicaciones Symfony.

Antes de comenzar su exposición, Matthew ha declarado que ambos frameworks no son enemigos (“I’m not the enemy”) sino rivales, por lo que se han eliminado todas las reticencias que pudieran existir entre los asistentes.

La transparencia número 9 explica bien cuál es la principal ventaja de utilizar Zend Framework en las aplicaciones Symfony: buscador (Zend_Lucene), generación y modificación de PDF (Zend_Pdf), acceso a servicios web (Zend_Gdata, Zend_Service_Amazon, Zend_Service_Akismet), cloud computing, etc.

Comenta este artículo »

Zend Framework se rinde ante Doctrine

Jueves, 29 de Octubre de 2009

Benjamin Eberlei acaba de anunciar hace unos minutos que abandona el desarrollo de Zend_Entity, un proyecto que pretendía crear un ORM nativo para Zend Framework. A partir de ahora, dedicará todos sus esfuerzos a mejorar el ORM Doctrine y su integración con el Zend Framework.

Las razones esgrimidas para esta decisión son las siguientes:

  1. Le consume demasiado tiempo y ha llegado a ua situación de bloqueo
  2. Zend_Entity sólo tiene un desarrollador y por eso no tiene ni la mitad de características de Doctrine 2
  3. La fecha prevista de finalización de Zend_Entity era de hasta seis meses, algo que no encaja muy bien con la planificación de las nuevas versiones de Zend Framework

Matthew Weier O’Phinney, máximo responsable de Zend Framework, está de acuerdo con la decisión porque “creemos que ayudar a mejorar un proyecto existente [Doctrine] y trabajar en su integración [con Zend Framework] será mejor para toda la comunidad de PHP”.

Esta decisión supone una excelente noticia para todos:

  • Doctrine gana una enorme base de usuarios que ayudarán a mejorar el proyecto.
  • Zend Framework gana el acceso al mejor ORM de PHP.
  • Los usuarios ganan porque Doctrine será todavía mejor.
  • Symfony gana porque de forma indirecta controla el proyecto Doctrine y de esta forma se asegura que su integración siempre va a ser mejor que la de Zend Framework.

Felicidades a Jonathan Wage y el resto de programadores de Doctrine por el enorme esfuerzo que dedican a Doctrine y por este gran éxito. Felicidades también a Fabien Potencier, creador y máximo responsable de Symfony, por ver antes que nadie el brillante futuro de Doctrine y por asegurarse el control indirecto del proyecto contratando a su principal desarrollador. No en vano Fabien aseguró recientemente que “Doctrine 2.0 is gorgeous. Doctrine 2.0 is one of best things that’s happened to PHP in a long time.”

10 comentarios »