2. El Lenguaje PHP (básico)¶
Este es un tema de iniciación al lenguaje PHP. Se busca tener los conocimientos del lenguaje para poder realizar los ejercicios básicos de Ejercicios Genéricos de Programación
Me baso en el excelente tutorial de JavaTpoint para hacer referencia a cada uno de los elementos del lenguaje. Es simplemente un esquema ordenado del tutorial. Y puedes consultar también el excelente curso de Aitor Medrano
Requisitos Previos
Necesitas unos conocimientos básicos previos de aprender a programar. Si no los tienes, tampoco pasaría nada pero necesitarás más tiempo para adquirir los conocimientos de cada sesión de clase.
Esfuerzo Necesario
El curso está organizado en 8 sesiones de clase. Cada clase (sesión) implica una dedicación de entre 2 y 4 horas.
La dedicación depende del conocimiento previo, motivación y capacidad de aprendizaje del estudiante para esa sesión en concreto.
2.1. El lenguaje PHP¶
Visión General
Historia
Características
Cierto conflicto: a (casi) nadie le gusta, pero todos lo utilizan
Ejemplos de Código:
Dentro del DOM como etiqueta ?php
Como aplicación (php genera todo el html)
La documentación oficial está en el Manual PHP
Introducción PHP -> php-tutorial
Mi primer programa:
Instalarlo (Servidor de Aplicaciones PHP) -> install-php
Crear un programa php dentro de un elemento HTML -> run-php-code-in-xampp
Generar una página dinámica: -> php-echo / php-print / Diferencias php-echo-and-print-statements
Comentar el código -> php-comments
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.2. Variables, Datos y Operadores¶
Variables en PHP -> php-variables
Ámbitos de las variables -> php-variable-scope
Local (lo habitual e ideal)
Global (con atención)
Estática (salvo causa de fuerza mayor)
Operadores $ y $$ -> php-dollar-doubledollar
Constantes, se pueden definir ( php-constants) o usar unas predefinidas (php-magic-constants)
Tipos de datos (php-data-types):
Escalares: boolean / integer / float / string (php-string)
Compuestos: array / object
Especiales: resource / NULL
Operadores (-> php-operators)
Se usan caracteres especiales para las diferentes operaciones
Se clasifican en diferentes tipos (aritméticos, de comparación, de asignación, …)
Hay operadores unarios, binarios y ternarios, según los operandos que participen
Si hay varios operadores, mejor usar paréntesis para definir la precedencia
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.3. Estructuras de Control y Repetición¶
De Control:
-> php-if-else
-> php-switch
De Repetición:
-> php-for-loop
Para modificar el flujo (pensar bien antes de usar):
-> php-break
-> php-continue
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.4. Programación Modular (Funciones)¶
Repasa los conceptos de funciones, procedimientos, parámetros/argumentos …
Para unos parámetros (o argumentos) de entrada (php-parameterized-function) la función devuelve una salida -> php-functions
Los parámetros pueden pasarse:
por valor (-> php-call-by-value)
o (pensar antes de usar) por referencia (usando & php-call-by-reference)
Los parámetros pueden tener unos valores predeterminados (php-default-argument-values-function) cuando no se especifican
E incluso tener un número variable de argumentos de entrada php-variable-length-argument-function
PHP admite recursividad, es decir, llamar a la función dentro de la función (ojo a definir el caso base) -> php-recursive-function
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.5. Cadenas de Caracteres (Strings)¶
String = secuencia de caracteres -> php-string
Con un montón de funciones para gestionarlas -> php-string-functions
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.6. Arrays¶
Son una estructura de datos muy utilizada (y una de las grandes ventajas de PHP)
Es un mapa que ordena valores en función de claves -> php-array
Tipos:
indexados. La clave es un número y está ordenado
asociativos. La clave es cualquier cosa
multidimensionales. Array de arrays
Y hay un montón de funciones para gestionarlos -> php-array-functions
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.7. Ejemplos de Funciones¶
Para gestionar cadenas de caracteres -> php-string-functions
Funciones matemáticas -> php-math
Puedes usar tu librería propia e incluirla en tu programa -> php-include-file
Actividad T02. Ejercicios Básicos de programación con PHP
Puedes usar el editor online de W3Schools, repl o tu propio entorno. La estrategia para practicar sería:
Pruebas con lo propone el tutorial.
Puedes probar con un reto distinto (Revisa Ejercicios Genéricos de Programación)
2.8. Uso de regexp¶
Regexp ( Expresiones regulares ) son una secuencia de caracteres que define un patrón de búsqueda -> regex
Muy útil tanto para buscar como para reemplazar texto (que es el tipo de datos más común en la web)
Algunos caracteres tienen un comportamiento especial (por ejemplo el punto), el resto se comportan como lo que son (por ejemplo una a)
Toda expresión regular se comporta como un autómata finito, es decir, tiene un flujo de análisis de izquierda a derecha
-
Cualquier caracter (.) vs un caracter concreto (por ejemplo la a) vs un caracter de un rango (por ejemplo [abc]])
Los corchetes[] también sirven para que busque el caracter literal o usar rangos con el símbolo - . P.ej [a.], que buscaría el caracter . o [a-d] que buscaría a, b,c o d.
Los caracteres cuantificadores (?, + , *) se usan para expresar la cantidad de caracteres que pueden aparecer. Se puede hasta especificar la cantidad mínima y máxima concreta con caracter llave. P.ej. {3,10}
La alternancia se puede usar con corchete con el carácter |. Pero | es más útil porque sirve para expresiones concretas, p.ej (hola|adios)
Se pueden definir principio (^) y fin ($) de línea. ^tiene un comportamiento especial dentro de corchetes (es el operador not)
Para agrupar se usan paréntesis (). Cada grupo a veces se puede numerar o ponerle un nombre (depende de la aplicación)
Algunos tutoriales muy buenos:
Uno completo en video (pero mejor no usar agrupaciones de caracteres):
Diseñar y usar regexp:
Hay muchos ejemplos muy útiles ( por ejemplo aquí )
Si ya te quieres poner a profundizar, puedes revisar REGEX101
En PHP se puede usar de diferentes maneras ( puedes probar )
Ojo que hay ligeras variaciones entre el uso de regexp en diferentes aplicaciones sobre todo con la agrupación de caracteres genéricos (digitos, palabras, líneas, etc).
Actividad T02-A08. Aprender Expresiones Regulares
Hay millones de ejemplos, pero por ponerte 10 ejercicios. ¿Qué cadenas de texto encontrarían las siguientes regexp?
hola
h.?a
h+b.
[2-4]?[3-9ag]
aju{2,8}m[-.]z
(ad)+juju.[0-9]?-
(ho|la)?[4-7zu]
([0-4][0-9]|5[0-2])[0-9]{3} . Códigos Postales España
^.{3,32}#[0-9]{4}$ . Usuario Discord
(b25[0-5]|b2[0-4][0-9]|b[01]?[0-9][0-9]?)(.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3} . Dirección ipv4. b es un delimitador de palabra «boundary».