Como convertirse en un "Desarrollador PHP Senior" y no morir en el intento... escrito por Enrique Place
Prontos primeros borradores de: surforce-base, surforce-library y surforce-modules
surforce-base
Ya tiene un módulo de ejemplo "noticias" que está andando bien. Solo queda resolver el tema del header y footer para que todos los módulos puedan acceder de forma centralizada a los mismos sin tener que repetirlos en cada sección de las vistas de cada módulo (en la nueva estructura cada módulo tiene dentro sus modelos, controladores y vistas, no tienen un lugar común). La solución estaría por un controller genérico que heredarían todos los controllers de los módulos y este estaría en suforce-library.
surforce-library
Se subió la primer versión con una estructura inicial con clases de ejemplo. La idea es que instalando una vez surforce-base, hay que instalar dentro del directorio "library" (igual que si fuera Zend) la librería Zsurforce. El proyecto base ya hace uso de clases de la librería.
surforce-modules
Tiene el mismo módulo de ejemplo de surforce-base ("noticias"), la idea de este repositorio es tomar lo que sirva y luego exportar (no sirve copiar los archivos, ya que irían los .svn y seguirían referenciando a los proyectos originales) en nuestro proyecto particular, para tener algo donde empezar y no de cero (más adelante se buscarán otras opciones). A pesar que el módulo "noticias" es igual en ambos repositorios (surforce-base y surforce-modules), se deja para facilitar las pruebas (también está el módulo "default").
Las urls que responden son:
http://localhost/surforce-base/ -> módulo "default"
http://localhost/surforce-base/noticias -> módulo "noticias"
Dentro de poco estoy agregando módulos como: usuarios, contactos, faqs, menú, etc.
Nota: "noticias" hace uso de conexión a la base de datos, en el directorio "sql" está su estructura y en application está config_sys.ini para cambiar los parámetros de conexión (config_app.ini solo es para cambiar particularidades de la aplicación, como títulos, etc).
Bueno, en las próximas horas más novedades. ;-)
¡Primera versión de surforce-base disponible!
Esta es la primera versión de surforce-base, todavía tiene algunos detalles que iré mejorando en los próximos días, pero es completamente funcional ;-)
Contempla todo lo que vengo hablando hace bastante tiempo en los foros de los proyectos: poder tener módulos independientes que contengan dentro de su estructura todos sus elementos, es decir, sus controladores, modelos y vistas (todo se origina a partir del patrón de diseño MVC).
Me basé en la estructura que arma ZendStudio a partir de su wizard, le ajusté algunos detalles y le agregué el soporte para leer el config.ini y un modelo para poder a su vez conectarse a la base de datos (la estructura de datos es la misma de surforce-cms).
Para instalarlo solo hay que bajarse del svn los fuentes de surforce-base y luego en el directorio library bajar tambien de su svn el framework Zend (solo copiar la carpeta Zend que está en el directorio library del repositorio del framework).
Actualmente si lo probamos, funciona de la siguiente forma:
http://localhost/surforce-base
Responde el controller por defecto que se encuentra en:
application/default
Si ejecutamos un módulo, como noticias:
http://localhost/surforce-base/noticias/
Y esto sigue los siguientes pasos:
- usa el controller por defecto del módulo noticias
/application/noticias/controllers/IndexController.php - pasa a la vista (según el action por defecto)
/application/noticias/views/scripts/index/index.phtml - como requiere datos, se los pide al modelo
/application/noticias/models/Noticias.php
Creo que a partir de ahora se puede estructurar en un repositorio centralizado todos los módulos que puedan ser reusados (noticias, usuarios, etc), y a partir de una estructura base ordenada poder empezar a desarrollar cualquier proyecto.
Los fuentes listos para bajarlos y usarlos
http://code.google.com/p/surforce-base/
También puedes suscribirte al foro para darme una mano.
Si me da el tiempo, ya empiezo a subir módulos básicos en el otro proyecto que se complementa con el anterior:
http://code.google.com/p/surforce-modules/
Y en cascada vendrá luego una librería
http://code.google.com/p/surforce-library/
Documentación
http://framework.zend.com/manual/en/zend.controller.modular.html
Bien, a desarrollar con Zend se ha dicho ;-)
Mejoras en Google Code: navegar el código fuente del repositorio SVN

Primero pienso que se debe a que el repositorio está vacío, pero luego de hacer unas pruebas me sorprendo con que el menú de la sección "source" tiene ahora tres sub-pestañas: Checkout, Browse y Changes.

Al entrar a Browse veo que tiene un arbol para navegar los directorios y luego de seleccionar un fuente lo muestra "coloreado". De la misma forma al entrar a Changes la visualización de cambios está también muy pulida.



Así da gusto recibir actualizaciones ;-)
Luego de mi visita relacionada con PHP y Argentina
En esta visita sumamos el placer con el trabajo y no quise perder la oportunidad de hablar personalmente con colegas que solo nos conocíamos a través del blog, de este blog, bajo los mismos temas: PHP, Surforce, proyectos libres, desarrollo, web 2.0, etc.
Tuve el placer, a pesar del poco tiempo, de conocer y charlar un buen rato con personas muy agradables:
- Fui a visitar la empresa Moviclips, donde trabaja Pablo Morales (quién está ahora en sus tiempos libres como desarrollador responsable de surforce-social) y posteriormente tuve una entrevista con su jefe, Diego Helmann. Ambos me parecieron muy buenas personas y tuvimos unas charlas muy entretenidas.
- Me junté con el gurú argentino de PHP el señor Pablo Rigazzi. Qué puedo decir de él, todo un personaje, tanto a la distancia como en persona ;-). Me alegro que ahora me diga que va a dejar de hacer frameworks y empieza a dedicarse de lleno a usar Zend en sus proyectos comerciales (por fin deja de inventar ruedas una y otra vez ;-)).
- También me junté con Dario Ocles, otro colega y colaborador en sus tiempos libres de los proyectos de Surforce. Darío está trabajando en fnbox.com, empresa argentina que tienen entre sus proyectos a sonico.com, un sitio de red social. Lamentablemente y a pesar que moví un día mi retorno a Uruguay no pude concretar una entrevista con ellos para conocerlos personalmente (si me hubiera podido quedar otro día tal vez iba por mi cuenta sin avisar ;-)).
No pude sacar muchas fotos, menos de nuestras charlas, pero para la próxima espero poder juntarnos de nuevo y poder hablar con más desarrolladores o empresas que estén vinculadas al desarrollo de sistemas web y en particular con PHP, para intercambiar puntos de vistas, proyectos y tendencias.
Plugin: TortoiseSVN dentro de Eclipse
Si estás en el ambiente Windows, uno de los clientes más completos es TortoiseSVN, que se integra al explorador y ofrece muchas opciones de consultas para revisar los cambios de los fuentes (como el famoso "blame" que permite saber exactamente qué línea tocó cada uno de los desarrolladores sobre un mismo fuente).

Si estando dentro de Eclipse extrañas las funcionalidades de TortoiseSVN, puedes usar este plugin para tener todo integrado en la misma herramienta.
PD: gracias Fabian Bueno por tu aporte ;-)
Nos vamos de paseo a Argentina
Más detalles en el blog personal ;-)
Dos nuevos sub-proyectos: surforce-modules y surforce-library
Es muy importante definir primero la "arquitectura", adoptarla durante toda la vida del mismo, y al final, poder evaluar los pro y contras para decidir en el próximo proyecto qué herramienta se mantiene o cual se cambia por otra.
Una vez que logremos estabilizarnos, podremos seguir acumulando conocimientos, herramientas, módulos, librerías, código... entre proyectos, evitando tener que reescribir una y otra vez -por ejemplo- un aburrido sistema de noticias, algo que perfectamente podría reusarse entre proyectos, y cualquier mejora, mejoraría a todos los demás proyectos (tu empresa / organización debería tener su propio "framework").
Siguiendo esa filosofía es que abro dos proyectos libres más:
- surforce-modules para nuclear módulos típicos que puede necesitar cualquier sistema
- surforce-library, de la misma forma que existe la librería Zend que da soporte a nuestra aplicación, podremos tener una librería que haga uso de Zend pero que incorpore funcionalidades más concretas y que a su vez, sean proclives a reusarse.
No importa si el proyecto que participes es abierto o cerrado, no hay duda, liberando estas partes de nuestros desarrollos todos saldremos beneficiados.
¡Contribuye a evitar reinventar la rueda! ;-)
Foros abiertos para surforce-cms y surforce-social
Les copio el mail que mandé al foro del tallerphp5 que hicimos durante el año 2007:
"Estimados:
Estoy reorganizando los proyectos, ya habrán escuchado de "surforce-social" (la misma idea de "surforce-cms" pero en otro contexto). Para empezar a definir un nuevo criterio, cerraré este foro y crearé uno público para todos los que quieran participar (el commit sobre el svn seguirá siendo restrictivo según demostrada valía para contribuir).
Desde ya agradezco la participación de todos e invito a que si desean seguir participando libremente (en cualquiera de los proyectos abierto), se den de alta voluntariamente.
Un abrazo a todos, empezaremos el año 2008 con cambios, como debe ser ;-)"
Así seguiremos con los demás proyectos, aportando mi experiencia para ayudar a ser de "incubadora" usando como base Zend Framework y apoyar de esta forma el desarrollo de nuestra comunidad compartiendo entre todos los avances que hagamos en nuestros proyectos abiertos.
Actualmente tenemos:
Y tengo pendiente que se postule algún voluntario para ser el desarrollador principal de:
Bienvenidos todos, sigamos trabajando y aprendiendo juntos ;-)
Nuevo proyecto: "surforce-social"

Bien, lanzamos nuevo proyecto y este estará relacionado con las redes sociales de contactos, tan en auge en este momento entre las empresas del rubro "web". Nuestro proyecto comunitario inicial fue suforce-cms, que aunque su desarrollo sigue lento y la participación de los colaboradores es muy esporádica, se mantiene activo y se está usando como base para otros proyectos que necesiten de una estructura inicial para proveer un servicio de tipo CMS y a su vez para empezar a desarrollar con Zend Framework (evitando involucrase en estructuras extremadamente complejas como puede ser Joomla, Drupal o Mambo).
En este caso, tomaremos otro tema para este proyecto, y son la redes sociales. Conozco a muchas empresas que quieren o están embarcadas en proyectos de desarrollo de este tipo de productos (algunas hasta han recibido millones de dólares en inversión), y no son pocas las veces que me han pedido para desarrollar un producto con estas características. Así qué mejor para acaparar la atención de los desarrolladores que involucrarnos en un tema tan interesante como este ;-)
Pablo Morales, un colega uruguayo que está trabajando en Argentina, nos dará una mano con el proyecto: él será el teamleader del mismo y yo lo apoyaré desde el rol de project manager. Se tocarán muchos temas interesantes, como el hecho de desarrollar toda la comunicación interna del mismo entre los usuarios y a su vez la posibilidad de hacer chat entre ellos. Por consiguiente, mucha interfaz, mucho Ajax ;-)
Los últimos meses he venido investigado "desde dentro" varios sistemas, conociendo fortalezas y debilidades. Entre ellos puedo destacar a neurona, xing, wamba, badoo y recientemente contakme. En lo personal, no los veo extremadamente complejos (tampoco soy un experto en el desarrollo de este tipo de sistemas), y a muchos de ellos les faltan muchas funcionalidades que considero básicas, o que directamente tiene uno pero que falta en el otro, y que juntos se complementarían.
Veremos cómo nos va, desde ya están todos invitados a participar, y espero que el tema interese. Estaremos estos días definiendo la estructura y la arquitectura base para trabajar.
PD: ¿cómo nos va a ir? Ni idea, pero espero que aprendamos algo en el camino, como nos pasó con el primero ;-)
Foro en español sobre Zend Framework

Les comento la existencia de un foro en español para concentrar consultas, novedades y proyectos en nuestro propio idioma sobre Zend Framework. Este foro es parte de un movimiento de la empresa Zend para crear un foro por idioma y así ayudar a difundir esta herramienta entre los desarrolladores PHP.
Espero que lo aprovechemos, no solo consultando, sino también respondiendo dudas.
Entradas populares
-
He visto mucha documentación que habla sobre el tema de los métodos "getter / setter", o traducido al castellano los métodos ...
-
Esto es lo que pasa cuando tienes entornos que no son homogéneos y cada aplicación se encuentra ubicada en distintas márgenes de un "rí...
-
Uno de los problemas que me he encontrado con la versión 5 de PHP es la falta de la representación de los "paquetes" desde el prop...
-
Este es un resumen de conclusiones que se vertieron en una discusión sobre el tema en Foros de Web , donde se plantea la duda de si PHP5 ...
-
Este es un ejemplo publicado a partir de la duda de un usuario , y como son preguntas que se hacen reiteradamente, les dejo el ejemplo aquí ...
-
Esta reflexión se la escribo a todos los "Programadores PHP": Al día de hoy la mayoría de los institutos o universidades de muchos...
-
El Patrón " Singleton " sirve para cuando buscamos restringir la creación de instancias de un objeto, obligando que solo se pueda ...
-
Hace un tiempo que vengo recomendando esta presentación como punto de partida para definir un estándar de desarrollo en una empresa. En ambi...
-
Bueno, luego de revisarlo una y otra vez (y otra vez) ya se encuentra terminada la primer versión del libro que junta toda la experiencia ac...
-
Estoy viendo muy seguido en foros que frecuento regularmente a muchos programadores que quieren dar " el gran salto " y evolucion...