PHP Frameworks

Acerca de mí









Mi nombre es Jesús Manuel Olivas

@jmolivas  |  http://jmolivas.com

Que es un Framework?


En el desarrollo de software, un framework o marco de trabajo es una estructura conceptual y tecnológica de soporte definida, normalmente con módulos que realizan labores previamente establecidas.


En la cual otro proyecto de software puede ser organizado y desarrollado. 

Y entonces ... qué es un Framework? 


Pensemos en un framework como una caja de legos esas que teníamos cuando niños con ellos podíamos construir casi cualquier cosa uniendo las diferentes piezas.


Recordemos que no todas las piezas eran iguales algunas tenían funcionalidad específica, estas pueden ser los diferentes módulos, plugins, gemas o bundles.

Por que utilizar un Framework?


  • Un framework no es una necesidad absoluta, pero sin embargo es muy útil.

  • Un framework (core/núcleo) es una garantía de calidad, capacidad de actualización y mantenimiento de aplicaciones a un costo menor.

  • Las aplicaciones desarrolladas utilizando un framework cumplen con de los estándares del mercado.

Construye tus aplicaciones no tus herramientas


Este es el principio básico de todo framework: no tener que reinventar la rueda. 


Además de la eliminación de malas prácticas y tareas de bajo valor agregado, por ejemplo, el desarrollo de componentes genéricos con el fin de centrarse totalmente en las reglas de negocio.

El síndrome NIH


NIH (Not Invented Here). Es un término utilizado para describir el comportamiento o la aversión que evita el uso de proyectos ya existentes a causa de sus orígenes externos.


  • Re-creación de las características existentes del lenguaje PHP.

  • Re-creación de código y funcionalidad de otros proyectos de código abierto establecidos.

Inconvenientes síndrome NIH

  • Tiempo de implementación al re-escribir código por no reutilizar, extender ó implementar funcionalidad existente.

  • Perdida de compatibilidad.

  • Compromiso de mantenimiento.

  • Los conceptos son portables el código no.

Mi primer aplicación


 <?php
// index.php
 
$link = mysql_connect('localhost', 'myuser', 'mypassword');
mysql_select_db('blog_db', $link);
 
$result = mysql_query('SELECT id, title FROM post', $link);
?>
 
    <html>
        <head>
        <title>List of Posts</title>
        </head>
        <body>
        <h1>List of Posts</h1>
        <ul>
            <?php while ($row = mysql_fetch_assoc($result)): ?>
            <li>
                <a href="/show.php?id=<?php echo $row['id'] ?>">
                    <?php echo $row['title'] ?>
                    </a>
            </li>
            <?php endwhile; ?>
        </ul>
        </body>
    </html>
 
<?php
mysql_close($link);?>
Un blog sencillo creado con PHP simple

Cual es el problema?


  • No hay comprobación de errores: ¿qué sucede si falla la conexión a la base de datos?

  • Organización deficiente: si la aplicación crece, este único archivo cada vez será más difícil de mantener, hasta que finalmente sea imposible. 

  • Es difícil reutilizar el código: ya que todo está en un archivo, no hay manera de volver a utilizar alguna parte de la aplicación.

Modelo Vista Controlador


Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.

  • Modelo:  Esta es la representación específica de la información con la cual el sistema opera.
  • Vista:  Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
  • Controlador Este responde a eventos, usualmente acciones del usuario e invoca peticiones al modelo y en ocasiones envia datos a la vista.

Frameworks en PHP




Qué beneficios ofrecen?


  • Construir aplicaciones bajo patrones ampliamente probados y establecidos como POO (Programación Orientada a Objetos).

  • Aprovechar las nuevas características del lenguaje PHP y mejoras de rendimiento.

  • Compartir código (interoperabilidad entre diferentes proyectos)

Por que Symfony 2 ? 


  • Reputación : Es un proyecto estable y reconocido, con una comunidad muy activa.
  • Permanencia : El proyecto esta en la version 2.3.x (LTS) iniciado desde el 2005 por Sensio Labs.
  • Referencias : Varios proyectos y empresas importantes lo estan utilizado Yahoo, Dailymotion, Opensky, Drupal 8, Behat, Doctrine, Propel, PHP Unit, Jackalope, Silex, PPI 2, Easybook, Midgard CMS, Zikula, phpBB, Laravel.
  • Innovación : Symfony2 fue creado tomando en cuenta las mejores prácticas existentes del mercado actualmente, tomando ideas de proyectos RoR, Java, Python.

Qué ofrece Symfony2?

  • Persistencia de datos 
  • Seguridad 
  • Formularios & Validación 
  • Plantillas
  • Archivos de log
  • Rendimiento & Cache
  • Internacionalización
  • Tareas programadas
  • Enrutamiento

Cuales buenas prácticas ?

 

Hibernate




Ruby / Rails





Django




Busca antes de escribir código.


Es fácil ser víctima del síndrome NIH (Not Invented Here / No inventado aquí) y pensar en escribir código para cada una de nuestras necesidades.


La recomendación es reemplazar el síndrome NIH por el síndrome PIE (Proudly Invented Elsewhere / Orgullosamente Inventado en Otro lugar) y enfocarse en desarrollar funcionalidad que agregue valor a nuestro producto o aplicación.

Para finalizar


Programar es como las artes marciales. Puedes patear el trasero de cualquiera, pero tienes que contar con la disciplina necesaria para utilizar la violencia solo en caso de ser necesario.

PHP Frameworks

By Jesus Manuel Olivas