Entorno de desarrollo php

Esta entrada pertenece a una serie de artículos para la creación de un completo entorno de desarrollo php.

En Esta entrada mencionaré el Entorno de desarrollo php que he ido construyendo a lo largo de los años en base a mi experiencia, en mi caso lo estoy utilizando para Magento, por lo que tendremos una parte específica en la que se mencionarán herramientas exclusivas para Magento.

Por un lado me gusta estar rodeado de herramientas que me permitan entender el funcionamiento de Magento desde el mas bajo nivel y por otro me gusta las herramientas que me aportan una comodidad en las tareas que ocupan mi día a día y lo mas importante, 

Me gusta trabajar sin miedo a romper las cosas

Dividamos todas las herramientas en varios grupos, aunque estemos tratando un entorno de desarrollo php, estas herramientas deben de tener su equivalente en cualquier lenguaje, son los elementos bajo mi punto de vista que cualquier desarrollador debería de tener independientemente del lenguaje.

Entorno de desarrollo php

IDE

El editor de código es la herramienta el entorno de desarrollo php que más tiempo va a pasar , tenemos muchas alternativas, cada día mas. También he visto plugins que convierten un editor de texto plano( notepad++, sublime, .etc)  en un editor de un lenguaje específico.

Los editores mas famosos utilizados a lo largo de la historia de la programación son: Vim, Eclipsenotepad++sublimeZend Studio, PhpStorm, etc.

Ide PHPStormActualmente mi corazón está con PhpStorm, poco a poco ha ido cautivándome hasta que me ha hecho fiel seguidor.

 

Debug

 Muy importante  que puedas depurar tu código sea el lenguaje de programación que sea.

En mi caso soy desarrollador Magento. Si has llegado a esta entrada y tu eres desarrollador Magento, ya sabes lo inmenso que puede ser y lo compleja que puede llegar a ser una traza de una ejecución, la cual puede pasar por infinidad de objetos.

Depurar un código te puede dar un conocimiento mucho mas amplio de la arquitectura del software que estés utilizando, con lo cual si no lo has hecho nunca, ya tienes una tarea mas que añadir a tu GTD, bajo mi punto de vista te da otro salto de calidad que te pueda hacer jugar en otra liga.

A continuación las herramientas de Debug:

  • Búsquedas: En mi día a día puede ser el método que mas haya utilizado, puedes realizar la búsqueda desde tu IDE preferido o al método mas tradicional con un grep desde consola.
  • var_dump(): es la manera de imprimir por pantalla el valore de una variable, es esencial en su versión mas primitiva como en las mas modernas como puede ser LadyBug
  • Zend Debugger: Es el que utilizaba dado que antes utilizaba Zend Studio y era el que venía preinstalado y configurado con él.
  • Xdebug: Es el que estoy manejando ahora mismo y estoy muy contento, es una herramienta esencial de un buen entorno de desarrollo php. Aparte lo último que descubrí es un plugin de firefox para mandar la petición desde el mismo con la depuración activada.
    • The easiest xdebug, me gustó mucho el plugin dado que se puede lanzar la depuración en el momento que se quiera y da mucha facilidad a la hora de analizar una petición vía AJAX
  • PHPDbg: No lo he utilizado y no se como será. Solo puedo decir que están integrado en la versión de PHP 5.6

Profiler

Herramientas muy útiles para buscar errores de programación, dado que ofrece el tiempo que ha tardado función cada función en el flujo de ejecución, con el número de veces que ha sido llamada, la cadena de llamadas entre objetos.

Algunos profilers:

  • XHPROF:  Es un profiler creado por Facebook para optimizar su código. Conjuntamente con alguna interfaz de usuario puedes ver el flujo de ejecución de una manera muy gráfica.
    • XHPROF UI:  Herramienta con la que podrás visualizar las trazas de ejecución de una manera muy gráfica.
  • PHP Explain: similar a XHPROF, pero muestra a nivel de opcode la ejecución de las aplicaciones PHP, es el mas bajo nivel al que vas a podrás analizar.

Magento

 Te recomiendo que no te saltes este punto, aunque tu entorno de desarrollo php no este destinado a Magento , dado que con la herramienta con la que estés trabajando deberá de tener algo parecido, en caso de que no haya nada similar podría ser buen momento para plantearse desarrollarlo.

A continuación voy a nombrar las herramientas que estarían disponibles para Magento:

  • Modo Desarrollador: Que si, que estoy de acuerdo contigo. Es un dolor de … comenzar a trabajar con este modo activado. pero una vez que te acostumbras lo empiezas a ver como un recurso mas que puede ahorrarte mucho tiempo en tus desarrollos. Para los que no sepan de lo que estoy hablando, en este modo Magento se pone en un modo mucho mas sensible a errores, como si estuviéramos desarrollando en JavaScript con el modo Strict mode activado
  • N98.Magerun: Es un PHP compilado que puedes ejecutar desde línea de comandos y que ofrece realizar tareas de Mantenimiento, Desarrollo, etc. de una manera muy sencilla. Por ejemplo: Conectarte a Mysql tomando las credenciales con las que está configurado Magento de manera automática.
  • Magicento: Plugin de PHPStorm que de ahorra mucho tiempo en el proceso de desarrollo. Ejemplo: La parametrización de Magento es un poco compleja de entender al principio, pues con esta herramienta podrás crear un módulo  con los componentes necesarios con la parametrización realizada.
  • Barra de Desarrollador: es un must en todo entorno de desarrollo php, ya sea Magento o sea el framework que sea.
    • Magento Developer Toolbar: Esto es un módulo de Magento, el cual integra una barra de herramientas que te permite visualizar información de la arquitectura de Magento. Ejemplo: podrás ver los handles que están cargados de un simple vistazo.Magento Developer Toolbar
    • Commerce Bug Magento: Esta es una barra de desarrollador creada por CommerceBug_Icon_450x450_grandeAlan Storm, el cual podrás encontrar en su blog, el cual realiza aportes de Magento entre otras cosas a muy bajo nivel y con uno conocimientos muy amplios de programación.
    • Z-Ray: Es otra barra de desarrollador de la cual he oído hablar últimamente. Es mas genérica y funciona con diversos frameworks( WordPress, zend Framework, Magento, etc.)

Control de Versiones

El control de versiones que ha acompañado siempre a mi entorno de desarrollo php ha sido GIT, en cual me ha aportado mucha confianza y me ha dado una flexibilidad muy amplia.

Herramientas: En este punto puede que no sea el mas indicado en comentarlas dado que soy un poco vieja escuela y todas las operaciones de GIT las realizo desde consola, no obstante voy a mencionar las que conozco y que pueden ayudarte en tu día a día.

  • SourceTree: herramienta para MacOs y para Windows de la cual he oído hablar muy bien de ella.
  • smartGit: Esta herramienta si que la utilicé en mis inicios y puede ayudar a desarrolladores que estén empezando a tener contacto con controles de versiones. Disponible para Windows, MacOs y Linux.
  • Kaleidoscope: Herramienta para mostrar las modificaciones realizadas en un fichero. Puedes ver hasta las diferencias que hay en una imagen, en caso de que lo necesites.

Despliegue

Una vez realizado tus desarrollos llega el momento de publicarlos en los entornos que sea necesario, así que necesitamos una herramienta que nos facilite esta tarea.

Este aspecto es uno que pocas empresas tienen en cuenta y despliegan con ftp, rsync, etc

vaya manera de complicarse la vida

Así que en mi entorno de desarrollo php nunca faltará alguna herramienta que me facilite este aspecto. Del que mas puedo hablar es de Capistrano, dado que es el que mas he utilizado, pero tienes infinidad de opciones como Typo3 Surf, Magallanes, mgt-commerce server deployment , etc.

Máquinas Virtuales

Mi recomendación es que trabajes con máquinas virtuales y que te apoyes en Vagrant para la mediación entre la máquina virtual y VirtualBox. Con este enfoque, podrás dispones de tantos entornos como quieras preparados para lo que quieras de una manera muy limpia y sin miedo a romper nada. Podrás ver mas acerca de la solución que he adoptado en otra entrada donde me he sumergido en la solución que utilizo para Vagrant Magento

Carga

Un vez realizada nuestra nueva funcionalidad y subida al entorno de Staging, Producción,etc. otro  aspecto que deberías tener en cuenta en tu entorno de desarrollo php debería de ser algún herramienta para poder probar el rendimiento de tu entorno para poder tener una orientación de las visitas concurrentes que podría aguantar tu servidor.

Apache http server Benchmarking took: Herramienta con la que podría simular peticiones concurrentes a una URL. Es muy sencilla de utilizar y viene con Apache, por lo que no es necesario que instales nada, como pega tiene que solo podrías hacer las peticiones a una únida URL.

SIEGE: Esta si que es la que nunca falta en mi entorno de desarrollo php. Con esta herramienta puedes realizar peticiones concurrentes a una lista de URL que le pases como parámetro. En este caso si que puedes alternar entre diferentes URL, lo mas normal es que tomes un sitemap

 Conclusiones de un Entorno de desarrollo php

Es mas importante que te quedes con el concepto que con herramienta en concreto que he mencionado. Da igual para el lenguaje de programación que estés utilizando, lo comentado no solo se aplica a un entorno de desarrollo php si no que podrías aplicarlo a la mayoría de los lenguajes.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *