Curso de PHP: Nivel Básico – Introducción

Esta es la primer entrega del Curso de PHP para principiantes de programación, no sólo web sino en general. Aquí explicaré temas teóricos básicos que permitirán entender las clases que seguirán, que tendrán un caracter mucho más práctico. Como ya comenté en el artículo donde anuncié el curso, las explicaciones serán lo más claras posibles y tal vez omita algún detalle que pueda considerar muy técnico y que perjudique el entendimiento de algún tema o concepto.

Para poder seguir el curso sólo es necesario tener un conocimiento básico de HTML. Cualquier página web rudimentaria que hayan armado puede haberles dado la experiencia necesaria para poder empezar este curso. Conocimientos de CSS no son necesarios, pero son bienvenidos. Lo mismo con Javascript.

Bien, empecemos.

El navegador

El navegador web es el programa que se usa habitualmente para ver páginas webs. En inglés se le dice browser y es el nombre más usado en la jerga de los programadores. Su funcionamiento es en realidad bastante simple. Lo que hace el navegador es tomar una archivo en el lenguaje de etiquetas HTML e interpretarlo. La interpretación consiste en identificar los elementos que contiene, hallar su contenido o valor, posicionarlos en pantalla y mostrarlos.

browser

Existen muchos navegadores. Los más conocidos son Firefox, de la Fundación Mozilla; Chrome, de Google; Internet Explorer, de Microsoft; Safari, de Mac; y Opera, de Opera Software. No se comportan todos de la misma manera. Es decir que, al recibir un mismo archivo HTML, puede haber pequeñas diferencias en cómo lo muestra cada navegador. Incluso, hay diferencias entre distintas versiones de un mismo navegador, especialmente Internet Explorer. Actualmente se considera en desuso la versión 6 de este programa, que venía por defecto con Windows XP y que es la que más problemas le traía a los programadores y diseñadores web.

Esta diferencia entre navegadores es la famosa incompatibilidad entre ellos. Cuando alguien habla de “cross browsing”, se refiere a aplicaciones web y páginas que respondan correctamente y de la misma manera en todos los navegadores. Una tarea que a veces puede resultar difícil.

Servidores, clientes, peticiones y respuestas

Como bien comenté, el navegador recibe el HTML y lo interpreta para luego mostrar el resultado. El HTML no es más que un archivo de texto que contiene escrito adentro código HTML, por ejemplo:

Al ser un archivo, al navegador no le importa en absoluto de dónde proviene. Puede estar alojado en el disco rígido, en un pendrive, en un soporte óptico (cd, dvd, blu-ray), o en un servidor. Si quieren hacer la prueba pueden entrar a cualquier página web, guardarla en su disco rígido y luego abrirla estando desconectados de internet. Los navegadores tienen esa opción, aunque hoy en día muy pocos la usan.

Sin embargo, sabemos que las páginas webs se alojan en servidores. Y a no asustarse con la palabra servidor. Un servidor es simplemente una computadora que generalmente posee grandes capacidades de procesamiento, memoria y espacio en disco y que tiene software especial instalado para poder dar respuestas a peticiones. Los archivos HTML que navegamos, en realidad están en el disco rígido de una de estas computadoras que puede estar a miles de kilómetros de nuestro hogar. Pero, como ya dije, al navegador le da lo mismo,  lo único que va a cambiar va a ser la velocidad de carga de la página debido a la distancia.

La World Wide Web (WWW) que es lo que conocemos como la internet que navegamos a través del navegador, utiliza un protocolo que se llama HTTP (Hyper Text Transfer Protocol) que funciona básicamente de la siguiente manera: existe un servidor que tiene las páginas y se le llama cliente a todo equipo que se conecta a él para pedirle alguna. Se ve más claro en el gráfico:

HTTP

El cliente se conecta al servidor y le hace una petición, el servidor devuelve una respuesta enviando un archivo HTML al cliente. El navegador interpreta el HTML y lo muestra.

Lenguajes de servidor y de cliente

Explicado qué es el servidor y el cliente, ahora voy a explicar dónde está cada lenguaje vinculado a la programación web.

El intérprete de HTML se incluye en el navegador, por lo tanto, está del lado del cliente. De la misma forma, el navegador trae un intérprete de Javascript, que es un lenguaje que permite hacer muchas cosas y que últimamente se ha visto potenciado por la aparición de HTML5. CSS es otro lenguaje, que se usa para dar formato y estilo a la presentación de la web y también está del lado del cliente. Flash y Java, también lo están, aunque requieren de la instalación de un agregado para poder funcionar en el navegador.

¿Y qué hay en el servidor? En principio, así como existe un navegador en el cliente que interpreta y soporta los lenguajes, en el servidor existe un servidor HTTP que se encarga de manejar las conexiones y las peticiones que se le hacen. El más popular de todos se llama Apache. Lo van a encontrar instalado en la mayoría de los hostings. Pero es bueno saber que no es el único, hay otros como IIS (Internet Information Service), de Microsoft; Tomcat de Apache Software Foundation; o lighttpd que es un servidor web más liviano y rápido.

Ese servidor web puede tener instalado distintos módulos para dar funcionalidades, entre ellos, lenguajes de servidor. Estos lenguajes se encargan de realizar tareas luego de la petición al servidor y antes de enviar la respuesta al cliente. Puede utilizar parámetros enviados por el cliente y en función de estos, enviar una ú otra página. Incluso, el lenguaje del servidor puede armar una página de HTML de forma dinámica. Lo veremos mejor al profundizar en PHP.

Hay varios lenguajes de servidor: CGI es el más antiguo de todos. Luego aparecieron Perl, PHP, ASP y JSP. Perl se ha usado siempre para realizar tareas de mantenimiento en servidores. ASP no es libre, es de Microsoft y viene con licencia. JSP sólo funciona en servidores Tomcat. PHP es libre y funciona con Apache.

Además, un servidor puede tener instalada una base de datos, lo cual potencia el uso del lenguaje de servidor. La más popular es MySQL, antes de Sun Microsystems y ahora perteneciente a Oracle.

Resumiendo, un pequeño gráfico para identificar dónde se ubican las tecnologías web.

cliente-servidor

A continuación, hablaré sobre PHP, pero muchas de las características que describiré se aplican también a los otros lenguajes de servidor.

PHP

PHP es el acrónimo de Hypertext Pre-Procesor y se traduce como pre procesador de hipertexto. ¿Qué es el hipertexto? El HTML.

Algunas consideraciones básicas de este lenguaje es que en entornos web, es interpretado. ¿Esto qué quiere decir? Todos los lenguajes parten de un archivo de texto (código fuente) escrito en el lenguaje correspondiente. Los lenguajes compilados utilizan un compilador, que es un programa que toma este archivo, lo procesa una vez y genera un nuevo archivo que es el que realiza lo que el original pretende. Este nuevo archivo se usa cada vez que se necesita y si se quiere cambiar algo, es necesario editar el de texto y volver a compilarlo.

Los lenguajes interpretados no usan compilador. La computadora toma el código fuente y lo lee instrucción por instrucción cada vez que lo necesita. No se genera un nuevo archivo en este proceso.

Sin embargo, PHP puede ser compilado, pero no vamos a entrar en este tema. Lo importante es entender que los scripts que escribiremos para este curso serán interpretados.

Pero ¿Qué hace PHP ahí en el medio?

PHP fue hecho para crear páginas webs dinámicas. Es decir que, el cliente le realiza una petición al servidor y le envía unos parámetros. PHP toma esos parámetros y “arma” en el momento un HTML que le pasa al servidor para que se lo devuelva al cliente. Esto es lo que ocurre en un sitio web dinámico.

En cambio, si fuera estático, el servidor solo tendría una serie de páginas HTML ya escritas y al realizar la petición del cliente le devolvería una de ellas.

Trazando una analogía, digamos que un señor (el cliente) va a un restaurant (sitio web), lo atiende el mozo (servidor) y le pide un plato de milanesas con papas fritas. Si estamos en un sitio estático, el mozo sólo podrá ofrecerle al señor algunos platos ya armados. Ahora, si el sitio es dinámico, aparece el cocinero (PHP u otro lenguaje de servidor) que de acuerdo a lo que el cliente pida, arma un plato distinto y se lo da al servidor para que se lo lleve al cliente.

Esta analogía es un poco forzada pero tal vez le sirva a alguien para entender mejor.

Veámoslo ahora con un ejemplo más claro y específico de programación. Supongamos que queremos hacer una página web sobre películas donde ponemos la ficha técnica del film y nuestra crítica. Usando solo HTML y haciendo un sitio estático, deberíamos crear un archivo por cada película. Y si tenemos 100 películas, necesitaríamos 100 archivos HTML.

Con PHP, sólo haría falta uno. Ese archivo sería una especie de plantilla que serviría para todas las películas. La información de la ficha técnica y nuestra crítica estaría almacenada en una base de datos. De esta forma, si un cliente entra a nuestro sitio a ver los datos de, por ejemplo, Rocky IV, el servidor recibe los parámetros de búsqueda, se los pasa a PHP, este busca en la base de datos, esta le devuelve la información, PHP mete los datos en la plantilla y devuelve un único HTML, armado específicamente para la búsqueda de Rocky IV.

web-dinamica

Pero, en el medio está la base de datos ¿es indispensable? No lo es para usar PHP, pero está claro que una base de datos potencia a cualquier lenguaje de servidor al punto de que hoy en día es raro encontrar aplicaciones web que no las aprovechen.

En este curso inicial, no veremos nada vinculado a las bases de datos, porque creo que antes de añadir complejidad, conviene tener un buen manejo del lenguaje de servidor primero.

Hasta aquí esta introducción, que espero les haya servido para entender un poco más qué es lo que pasa cuando alguien entra a una página web y cuál es la función de PHP en todo esto.

En el artículo siguiente empezaremos con la primer clase y ya escribiremos código PHP.

Cualquier duda o comentario es bienvenido.

Hasta la próxima.

Soy programador web y me desempeño como Líder Técnico en Polar Bear Development. Trabajo con tecnologías como PHP, Javascript, MySQL y HTML5 para el desarrollo de sitios y sistemas web. Me especializo en Zend Framework 2 y otros frameworks MVC, como también en WordPress y otros CMS. Lidero equipos de desarrolladores trabajando con Scrum. Vivo en Buenos Aires, Argentina.
 

10 thoughts on “Curso de PHP: Nivel Básico – Introducción

  1. Hola Alejandro

    Estaba buscando en internet unos ejercicios hechos en PHP y afortunadamente me encontré este sitio que está muy interesante, voy a estudiar los ejercicios que están resueltos.
    Muchas gracias por compartir sus conocimientos

  2. Ilan

    Muchas gracias por tus palabras. Trato de ser lo más claro posible al transmitir conocimientos.

    Saludos

  3. Esperanza

    Me alegro de que te sirvan. Recuerda que la solución que presento no es única y que cada problema puede ser resuelto de otra manera.

    Saludos

  4. Muy buena la página! Felicitaciones! Estuve haciendo cursos de php y este blog sirve mucho para aprender y repasar esta tecnología.

  5. Excelente informacion, muy buen aporte para los que estamos en este proceso de aprender estas tematicas! Quisiera saber si ¿Puedo descargarlo como pdf?

  6. Hola Carlos

    Gracias por tu comentario. Por el momento no hay versión en PDF, pero quizás arme una si llega a ser útil. Mi idea es completar el curso pronto y luego, comenzar uno nuevo. Seguramente libere una versión gratuita en algún formato portable.

    ¡Saludos!

Deja un comentario

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


*