PHP está mejorando

PHP está mejorando

PHP Elephants

... y cómo Drupal está ayudando a ello.

Beto Arancibia

  • Drupalero desde 2010
  • Desarrollador web desde 2005
  • Seguidor de los estándares web desde hace unos 10 años.

PHP ...?

sceptic face
weird tool PHP: a fractal of bad design   The PHP Singularity

Por qué precouparme?

Bored face Bored

Uso de PHP

PHP es usado por casi el 80% de los sitios con lenguages de lado de servidor.

PHP Usage Uso de PHP

Sin embargo...

Programming Languages Market Share
Uso de PHP

Algunas conclusiones de esto

  • PHP sigue siendo el lenguaje de servidor más usado
  • ... y su uso sigue aumentando.
  • PHP es usado en muchos sitios más con poco tráfico que otros lenguajes de servidor.
  • ... alguien debe mantener/mejorar este código
  • El uso de ASP.NET está decreciendo.
  • Perl, Python, Javascript, Ruby y ColdFusion son usados en "pocos" sitios, pero de alto tráfico.
  • El uso de CMSs está aumentando.
Server-side programming language statistics of usage

Críticas y horrores

  • Lenguaje no diseñado, de crecimento inorgánico.
  • Muchas formas de hacer lo mismo sin estar seguro de cual es la correcta.
  • Soporte de carácteres internacionales.
  • Variables globales
  • Falta de Namespaces(?)
  • Duplicidad de trabajo para dar soporte para código legacy
Cuáles son los horrores de PHP?

Problemas y consecuencias

  • demasiadas "soluciones", CMSs y Frameworks
  • documentación de calidad?
  • Falta de closures y funciones anónimas(?)
  • Falta de estándares y convenciones
  • Conflictos de nombres... namespaces
  • No hay (?) una forma estándar de instalar nuevos módulos... PEAR?
  • Sus desarrolladores
  • Duplicidad de código
  • doble de código
  • código duplicado ...
  • Torre de Babel de "módulos"
  • Poca gente interesada en desarrollar y mejorar el lenguaje

Nuevas características

  • Funciones deprecadas
  • Namespaces (PHP 5.3)
  • Servidor web incorporado (PHP 5.4)
  • Funciones anónimas

y quien usa las "últimas" versiones?

  • Shared hosts?
  • VPSs
  • Cloud Computing
  • AWS, Open Stack

Adopción mucho más rápida

Mejores herramientas de desarrollo

A better toolset

Composer logo Composer

Dependency Manager

Composer is not a package manager. Yes, it deals with "packages" or libraries, but it manages them on a per-project basis, installing them in a directory (e.g. vendor) inside your project.

Composer website

Usando Composer

  • Instalar Composer
  • Definir archivo composer.json
  • $ composer install
Instalación Composer

Modularidad

  • The Drupal way
  • The Unix way

Encargate de hacer solo una tarea, ... pero hazla bien.

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

Doug McIlroy

The Unix Philosophy

Packagist

Packagist logo Packagist

Necesitamos Estándares

  • Necesidad de comunicarnos
  • Necesario para la compatibilidad
  • Se está trabajando en ello desde el 2009
  • Distintos niveles de compatibilidad
PHP Framework Interop Group PSR Huh?

Oh wait...

  • PHP ya ha definido estándares
  • PHP puede ser modular
  • PHP por fin está reutilizando su código
  • Existen estándares
  • Importantes proyectos ya comparten su código
  • Por favor, dejemos de reeinventar la rueda
  • ... ya no es necesario hacerlo

Symfony

Symfony logo Symfony

Synfony2 meets Drupal

Drufony Larry Garfield

Symfony 2 + Drupal

  • Symfony 2 tiene 21 componentes reutilizables
  • Drupal 8 usa 11 de estos componentes

Symfony 2 + Drupal

¿Para qué?

  • Class loading utilities (PSR-0)
  • Dependency injection (manejo de construccion de objetos)
  • HTTP Foundation y HTTP Kernel
  • Routing (match/request)
  • YAML (nuevos cambios en configuración, CMI)
  • Varias utilidades

No sólo Symfony

  • Doctrine
  • Guzzle(Common, HTTP, Parser, Stream
  • EasyRdf
  • Routing (match/request)
  • Symfony-CMF/Routing
  • Assetic
  • PHP Unit
  • Twig

Donde aprender...

Créditos

Preguntas?