Desarrollo en servidor y multiplataforma
El desarrollo web se estructura sobre la arquitectura cliente-servidor, un modelo de diseño de software en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Al cliente se le conoce también con el término front-end, mientras que al servidor se le denomina back-end. En una aplicación web, el lenguaje que se utiliza principalmente para el desarrollo de la parte del cliente es HTML, complementado con CSS y JavaScript; la lógica del servidor se resuelve con lenguajes como PHP, Java (JSP), Python o Ruby.
Una aplicación web se ejecuta a través del navegador y del servidor, por lo que no requiere instalación en el equipo del usuario: precisamente la característica de "necesitar una instalación en el equipo para poder utilizarla" es propia de las aplicaciones de escritorio y NO de una aplicación web. Otras características habituales son el acceso multiplataforma y multidispositivo, la actualización centralizada y la independencia del sistema operativo del cliente.
PHP: lenguaje de servidor
PHP es el lenguaje de scripting de servidor más extendido. Algunos hechos clave:
-
Arrays: en PHP un array es realmente un mapa ordenado, un tipo que asocia valores con claves y que puede usarse como array clásico, lista, tabla hash, diccionario, pila o cola.
-
Asignación: la asignación en PHP devuelve el valor asignado y se evalúa de derecha a izquierda. En
$b = 4; $c = 7; $a = $b = $c;se asigna primero$c(7) a$b, y ese resultado a$a, de modo que$avale 7. Con$b = 3; $c = 4;el resultado es 4, y con$b = 2; $c = 3;es 3. -
Sesiones: la superglobal
$_SESSIONes la variable de entorno que se utiliza para almacenar información sobre la sesión del usuario (datos que persisten entre las distintas peticiones de un mismo usuario).
Bucles y condicionales en PHP
Para garantizar que un bloque se ejecute al menos una vez, se emplea el bucle do...while, que evalúa la condición al final. Así, <?php $i = 0; do { echo $i; } while ($i > 0); ?> escribe el valor de $i una vez aunque la condición sea falsa. Del mismo modo, un if cuya condición se cumple en la primera evaluación tambien escribe el valor: <?php $i = 1; if ($i >= 0) { echo $i; } ?> permite que se escriba al menos una vez el valor de la variable $i.
Niveles de error en PHP
PHP clasifica los errores mediante constantes. Los evaluados con frecuencia son:
| Constante | Descripción oficial |
|---|---|
| E_WARNING | Advertencias en tiempo de ejecución (errores no fatales). La ejecución del script no se interrumpe. |
| E_DEPRECATED | Avisos sobre código que no funcionará en futuras versiones; disponible desde PHP 5.3.0 para recibir dichas advertencias (E_DEPRECATED). |
| E_RECOVERABLE_ERROR | Disponible desde PHP 5.2.0; indica que ocurrió un error probablemente peligroso, pero no dejó al Motor (Engine) en un estado inestable; puede capturarse con un manejador de errores definido por el usuario. |
| E_COMPILE_ERROR | Error fatal de compilación generado por el Zend Engine. |
La sentencia require es fundamental para el manejo de dependencias: al no encontrar el archivo, require produce un error fatal (E_COMPILE_ERROR) y detiene el script, a diferencia de include, que solo emite un E_WARNING y permite continuar la ejecución.
Otros lenguajes de servidor y de cliente
-
Python: en una sentencia
if, el bloque de código a ejecutar cuando la condición se cumple se identifica por la indentación (sangría): cada línea del bloque debe estar precedida por el mismo número de espacios en blanco, con la misma sangría. Python usa la indentación en lugar de llaves para delimitar bloques. -
JSP (JavaServer Pages): el inicio de un comentario JSP (comentario del servidor, no enviado al cliente) se define con la sintaxis
<%--y se cierra con--%>. -
Swift: es un lenguaje de programación multiparadigma (soporta programación orientada a objetos, funcional, imperativa y de protocolos), creado por Apple.
-
Ruby on Rails (RoR): es un framework de desarrollo de aplicaciones web basado en el patrón MVC (Modelo-Vista-Controlador), escrito en Ruby, que sigue los principios "convención sobre configuración" y DRY.
Herramientas, servidores y CMS
-
XAMPP: es la distribución de Apache que contiene MySQL, PHP y Perl, disponible para cualquiera de los diferentes sistemas operativos (Windows, Linux, macOS, Solaris). Su nombre procede de "Cross-Platform, Apache, MySQL/MariaDB, PHP y Perl"; desde 2015 sustituyó MySQL por MariaDB. Es libre y multiplataforma, e incluye módulos como phpMyAdmin y OpenSSL.
-
Red Hat JBoss Web Server: es un servidor de aplicaciones/web de código abierto (basado en Apache Tomcat y Apache HTTP Server).
-
Drupal: es un sistema de gestión de contenidos (CMS) con licencia GNU/GPL, escrito en PHP.
-
PrestaShop: es un sistema de gestión de contenidos (CMS) para comercio electrónico basado en PHP y MySQL.
Control de versiones y CI/CD: Bitbucket
Bitbucket es una herramienta de gestión de repositorios Git de Atlassian. Su función principal es compartir datos, implementar y crear código, así como automatizar pruebas (colaboración sobre el código fuente e integración con flujos de despliegue). En su versión autoalojada, Bitbucket Server es compatible e integrable con Bamboo, el servidor de integración y despliegue continuos (CI/CD) de Atlassian: al enlazarlos, un push al repositorio dispara automáticamente la construcción y Bamboo devuelve el estado de compilación y los resultados de las pruebas a Bitbucket. Bitbucket también se integra con Jira y otras herramientas del ecosistema.
Fuentes
-
PHP Manual — Predefined Constants (error constants): https://www.php.net/manual/en/errorfunc.constants.php
-
PHP Manual — require: https://www.php.net/manual/en/function.require.php
-
PHP Manual — Arrays: https://www.php.net/manual/en/language.types.array.php
-
PHP Manual — $_SESSION / Session handling: https://www.php.net/manual/en/reserved.variables.session.php
-
Python Documentation — Compound statements (if): https://docs.python.org/3/reference/compound_stmts.html
-
Swift.org — About Swift: https://www.swift.org/about/
-
Ruby on Rails Guides: https://guides.rubyonrails.org/
-
Apache Friends — XAMPP: https://www.apachefriends.org/
-
Atlassian — Bamboo integration with Bitbucket Data Center/Server: https://confluence.atlassian.com/bitbucketserver/link-bitbucket-with-bamboo-1032258002.html
-
Atlassian — Bitbucket: https://www.atlassian.com/software/bitbucket
-
Drupal.org — Licensing (GNU GPL): https://www.drupal.org/about/licensing
-
Red Hat — JBoss Web Server: https://www.redhat.com/en/technologies/jboss-middleware/web-server