¿Cómo puedo convertirme en un gurú de PHP?

Empiezas a aprender desarrollo web haciendo desarrollo web. Lo bueno de PHP es que, por sus innumerables fallas, intenta ser extremadamente indulgente con los nuevos usuarios y ser lo más fácil posible para comenzar a jugar. Use las instrucciones en http://php.net/manual/en/install… (o el administrador de paquetes de su sistema operativo) para instalar un servidor web, entonces el php más simple es

archivo: /index.php
Hola Mundo

o, menos frívolamente:

archivo: /index.php
<? php
$ interlocutor = ‘Mundo’;
echo ‘Hola’, $ interlocutor;

Un marco simple (como http://cakephp.org/) puede ayudarlo a comenzar y darle un tutorial para recorrer.

Pero, sinceramente, no existen cosas como “gurú” en programación y especialmente desarrollo web, e incluso si lo hubiera, el título de “Gurú de PHP” sería similar a “Enano más alto”.

Le aconsejaría totalmente que no aprenda el desarrollo web moderno del lado del servidor utilizando PHP, al menos como su primer lenguaje del lado del servidor porque básicamente terminará aprendiendo un montón de técnicas de la vieja escuela y algunas nuevas a medias.

Lo que quiero decir es que ahora en 2011 no deberías desarrollar código del lado del servidor sin un buen marco MVC y un lenguaje decente a menos que sepas bien lo que estás haciendo.

Si eres nuevo en el desarrollo web, realmente necesitas aprender primero las tecnologías del lado del cliente, así que primero debes dominar HTML (idealmente 5) y CSS (idealmente 3) antes de saltar a cualquier tipo de cosas del lado del servidor.

Luego, asegúrese de comprender cómo funciona la web como plataforma:

  • ¿Qué sucede exactamente cuando escribe una URL en la barra de direcciones de su navegador y presiona enter?
  • ¿Cómo funciona HTTP?
  • ¿Qué es una cookie?
  • ¿Qué es un servicio web orientado a recursos?
  • ¿Cómo funciona Javascript?
  • ¿Qué es exactamente esta técnica llamada AJAX y cómo funciona?
  • ¿Cómo funciona el DNS?
  • ¿Qué es exactamente una dirección IP pública y privada?
  • ¿Qué es exactamente la interfaz de red de bucle invertido?
  • ¿Cómo funciona un servidor web?
  • ¿Qué es CGI en un contexto de servidor web?
  • ¿Cuáles son los módulos habituales disponibles en los servidores web y qué tipo de trucos te permiten hacer?

En este punto, debe tener una comprensión clara de cómo funciona la web como plataforma, pero realmente no puede codificar ninguna aplicación web completa por su cuenta.

Este es el momento perfecto para aprender sobre paradigmas de programación y asegurarse de comprender cómo los lenguajes declarativos como HTML y CSS son diferentes de los lenguajes imperativos como C, C ++, Java, Javascript y PHP.

Antes de comenzar a aprender la programación imperativa, hay un lenguaje declarativo más importante sobre el que debe aprender, al menos lo básico, y es SQL para trabajar con sistemas de administración de bases de datos relacionales como MySQL, PostgreSQL, Oracle o MS SQL Server.

Así que asegúrese de comprender toda la idea del modelo relacional y ensuciarse las manos modelando algunos escenarios de negocios del mundo real. También necesitará cómo usar las instrucciones SELECT, UPDATE y DELETE y al menos los conceptos básicos para hacer JOINS y luego oraciones como CREATE TABLE, ALTER TABLE, DROP TABLE, familiarizarse con los diferentes tipos de columnas disponibles y comprender la idea básica de índices, cómo funcionan, cómo se implementan y cómo pueden acelerar sus consultas.

Solo que ahora está listo para comenzar a aprender programación imperativa y acostumbrarse a cosas como variables, constantes, oraciones, condicionales, bucles, funciones, parámetros, contadores, acumuladores, indicadores y recursividad. Estos bits de programación imperativa se llaman programación de procedimientos porque terminas organizando tu programa como un grupo de subprogramas o “procedimientos”.

Luego, deberá aprender sobre estructuras de datos básicas como listas, montones, pilas, diccionarios, tablas hash, etc.

PHP no es una buena opción en estos días para aprender todo esto porque, como lenguaje, realmente parece una gran bolsa de hacks, no algo limpio, elegante o coherente. Python y Ruby generalmente se consideran mucho más elegantes, incluso hermosos lenguajes de programación hoy en día, por lo que es mejor que se adhieran a ellos. Asegúrese de obtener cadenas de manejo competentes y trabajar con estructuras de datos básicas.

Una vez que comprenda los conceptos básicos de la programación de procedimientos, necesitará comprender bien otro paradigma: la programación orientada a objetos. Diría que es mejor que abordes esto desde un punto de vista teórico primero y pases un buen rato entendiendo los conceptos y las ventajas prometidas de este paradigma y solo luego ensuciarte las manos con la sintaxis y semántica OOP específica de tu idioma de elección.

¡Ya casi terminas! Con sus brillantes habilidades de OOP, deberá ponerlas en práctica aprendiendo sobre los patrones de diseño de OOP, así que asegúrese de comprender qué es un singleton, qué es una estrategia, de qué se trata el patrón MVC (útil también para iOS / Cocoa programación) e intente implementarlos en su idioma preferido.

Es hora de que elija un buen marco web MVC como Ruby on Rails, Django, Pylons o Sinatra + amigos. Este es el momento exacto en que TODO se junta y conecta todos los temas anteriores para crear un código moderno del lado del servidor que funcione correctamente.

En este punto, molestarse en aprender PHP es absolutamente OPCIONAL para un desarrollador web moderno, pero definitivamente es muy útil ya que la mayoría de las personas probablemente solo conozcan PHP y solicitarán que el proyecto se realice en PHP principalmente porque saben que funciona o su entorno de alojamiento es compatible con PHP y, por supuesto, Facebook está hecho en PHP y WordPress está escrito en PHP y muchas otras razones que te engañan para que creas que PHP es bueno para ti.

Entonces, si comienzas a aprender PHP en este punto, ahora que ya valoras las ganancias de productividad de un buen marco y la limpieza, expresividad y poder de un buen lenguaje, sufrirás al aprender PHP no porque no lo entiendas sino porque te arrancarás el pelo debido a las muchas inconsistencias y los métodos arcaicos de sus formas clásicas de desarrollo.

Descubrirá que PHP no es solo un lenguaje de programación, sino también una plataforma y que un programa que funciona perfectamente no puede funcionar en la instalación de PHP de otra persona hasta que ajuste los valores correctos en el archivo php.ini.

La buena noticia es que en este punto ya sabe todo lo que necesitará para dominar una pieza de software como WordPress, Joomla o incluso un CMS / framework con una curva de aprendizaje tan alta como Drupal, todos los paquetes PHP muy populares.

Una vez que comprenda PHP, sufrirá aún más por elegir un marco de trabajo sano: tal vez Symfony, Zend, Lithium o CodeIgniter de alguna manera logren hacer el trabajo por usted, pero realmente realmente extrañará sus marcos de Python / Ruby todo el tiempo.

En este punto, realmente te has embarcado en tu camino para convertirte en un verdadero gurú de PHP. Tendrá que llegar a ser razonablemente competente en C no solo para comprender de dónde provienen tantas de la sintaxis y algunas de las funciones de PHP, sino también para comprender el código fuente del intérprete y los módulos de PHP.

Al mismo tiempo, encontrará que el framework web PHP disponible es tan escaso y tendrá la confianza suficiente como para comenzar a implementar un framework web mucho más simple, fácil de usar y más sensato, posiblemente inspirado por una mezcla de amigos de Sinatra + y Django

Y solo de esta manera, después de trabajar cientos de horas, posiblemente miles en toda una serie de proyectos PHP y después de haber creado sus propias extensiones PHP en C para aprovechar una nueva biblioteca o una nueva base de datos NoSQL, logrará su objetivo de convertirse Un verdadero gurú de PHP.

Para ser específico: le sugiero que comprenda las partes internas de PHP para llevar su código de espacio de usuario al siguiente nivel. El fantástico libro de Sara Golemon “Ampliando e incrustando PHP” [1] es un gran comienzo para aprender el motor Zend y el SAPI. Cuando comprenda cómo PHP almacena datos internamente y cómo su código se transforma en códigos de operación, puede tomar decisiones de codificación más inteligentes; Además, sabrá cuándo es mejor mover el código del espacio de usuario PHP a una extensión, y estará listo para hacerlo. Además, uno de mis usos favoritos para PHP es para usar como “pegamento de secuencias de comandos” dentro de las aplicaciones C / C ++; La naturaleza integrable de PHP es un rasgo altamente infrautilizado. El libro de Sara también te mostrará cómo hacerlo.

[1] http://www.amazon.com/Extending-