2.1 DateTime
2.2 PDO
2.3 PDOStatement
2.4 PDOException
2.5 DOMDocument
Funciones
4.1 isset()
4.2 empty()
4.3 gettype()
4.4 is_string()
4.5 str_replace()
4.6 strtolower()
4.7 number_format()
4.8 constant()
4.10 file_get_contents()
4.11 file_put_contents()
4.12 file_exists()
4.13 require_once
DateTimeLa clase DateTime proporciona una forma orientada a objetos para trabajar con fechas y horas.
Permite crear, modificar, formatear, comparar fechas y manejar zonas horarias.
Crear fechas actuales o específicas.
Modificar fechas fácilmente (modify()).
Comparar fechas (diff()).
Cambiar zona horaria (setTimezone()).
Formatear fechas (format()).
$fecha = new DateTime(); //Le asigna a la variable '$fecha' la fecha actual del sistema.
echo $fecha->format('Y-m-d H:i:s'); //Muestra la fecha con el formato indicado 'año-mes-dia horas-minutos-segundos'
$fecha = new DateTime('2025-12-25 10:30'); //Le asigna a la variable '$fecha' la fecha y hora indicada entre ('')
$fecha = new DateTime(); //Le asigna a la variable '$fecha' la fecha actual del sist ema
$fecha->modify('+1 month'); //Le añade 1 mes a la fecha creada
echo $fecha->format('Y-m-d'); //La muestra con formato 'año-mes-dia'
$f1 = new DateTime('2024-01-01'); //Le asigna a la variable '$f1' la fecha indicada
$f2 = new DateTime('2024-02-15'); //Le asigna a la variable '$f2' la fecha indicada
$diff = $f1->diff($f2); //Guarda la diferencia entre la $f1 y $f2 en una variable $diff
echo $diff->days; //Muestra la diferencia guardada anteriormente en dias
PDO es una interfaz consistente para conectarse a múltiples bases de datos
(MySQL, PostgreSQL, SQLite, etc.) con una API unificada y segura.
Conexión sencilla y flexible.
Consultas preparadas (previenen SQL Injection).
Múltiples modos de error.
Diferentes estilos de obtención de datos (arrays, objetos, etc.).
Este es el fichero de configuración de las constantes de la conexión, donde guardamos la ruta, el usuario y la contraseña de la base de datos para que no sean visibles para los desarrolladores. Simplemente comentamos y descomentamos la configuración que vayamos a usar en el momento, ya sea para desarrollo o para explotación.
<?php
/*
DESARROLLO
*/
const RUTA = 'mysql:host=10.199.9.104;dbname=DBAMNDWESProyectoTema4'; //Indica el host en el que se encuentra la base de datos y el nombre de ella
const USUARIO = 'userAMNDWESProyectoTema4'; //Indica el usuario que vamos a utilizar para conectarnos a la base de datos
const PASS = 'paso'; //Indica la contraseña del usuario
/*
EXPLOTACIÓN
*/
/*
const RUTA = 'mysql:host=localhost;dbname=DBAMNDWESProyectoTema4';
const USUARIO = 'userAMNDWESProyectoTema4';
const PASS = 'CD97ertvct$E';
*/
?>
Para usar el fichero de configuración:
require_once '../config/configPDO.php'; //Incluimos el fichero de configuración de la conexión a la base de datos
try {
$miDB = new PDO(RUTA,USUARIO,PASS); //Creamos un nuevo objeto PDO con las constantes del fichero de configuración
$miDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Hace que si pasa un error, PDO lance una excepción en vez de fallar en silencio.
echo "Conectado correctamente"; //Mostramos un mensaje de conexión exitosa
} catch (PDOException $miException) { //Capturaremos cualquier extepción de PDO para en caso de error mostrar el mensaje de error
echo "Error: " . $miException->getMessage(); //Mostramos el error en caso de que ocurra alguno
}
Representa una sentencia SQL preparada y ejecutada a través de PDO.
Preparación de sentencias SQL (prepare()).
Ejecución de consultas (execute()).
Obtención de resultados (fetch(), fetchAll()).
Enlazar parámetros (bindParam(), bindValue()).
$query = $pdo->prepare("SELECT * FROM usuarios WHERE email = :email"); //Prepara una consulta SQL con un parámetro llamado :email
$query->bindValue(':email', 'ejemplo@gmail.com'); // Asigna el valor 'ejemplo@gmail.com' al parámetro :email de la consulta
$query->execute(); //Ejecuta la consulta ya preparada y con el parámetro asignado
$usuario = $query->fetch(); //Obtiene la primera fila del resultado de la consulta (como array)
print_r($usuario); //Muestra el contenido del array con los datos del usuario
$query = $pdo->prepare("
INSERT INTO usuarios (nombre, email)
VALUES (:nombre, :email)
"); //Prepara una consulta SQL para insertar un usuario, usando parámetros :nombre y :email en lugar de valores directos
$query->execute([
':nombre' => 'Juan',
':email' => 'juan@example.com'
]); //Ejecuta la consulta y asigna los valores reales a los parámetros :nombre y :email
Excepción que se lanza cuando PDO encuentra un error,
siempre que el modo de error esté configurado como PDO::ERRMODE_EXCEPTION.
Capturar errores de conexión o consultas SQL.
Obtener mensajes detallados de error.
Permite depuración más clara.
require_once '../config/configPDO.php'; //Incluimos el fichero de configuración de la conexión a la base de datos
try {
$miDB = new PDO(RUTA,fdsafe,PASS); //Creamos un nuevo objeto PDO con las constantes del fichero de configuración pero pondremos el nombre de una de ellas mal para que salte una exception de PDOException
$miDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Hace que si pasa un error, PDO lance una excepción en vez de fallar en silencio.
echo "Conectado correctamente"; //Mostramos un mensaje de conexión exitosa si todo ha ido bien
} catch (PDOException $miException) { //Capturaremos cualquier extepción de PDO para en caso de error mostrar el mensaje de error
echo "Error: " . $miException->getMessage(); //Mostramos el error en caso de que ocurra alguno
}
Permite manipular documentos XML y HTML usando el modelo DOM.
Muy útil para parsing, scraping o generación de XML.
Cargar HTML o XML.
Crear nodos dinámicamente.
Recorrer y consultar elementos.
Guardar documentos modificados.
$html = '<html><body><h1>Hola</h1></body></html>'; //Define una cadena con el contenido de un fichero HTML
$dom = new DOMDocument(); //Crea un nuevo objeto DOMDocument para trabajar con HTML/XML
@$dom->loadHTML($html); //Carga el HTML en el objeto DOM; el @ oculta posibles warnings si el HTML está mal formado
$h1 = $dom->getElementsByTagName('h1')->item(0); // Busca todas las etiquetas <h1> y obtiene la primera que haya (posición 0)
echo $h1->textContent; //Muestra el texto dentro del <h1>, en este caso: "Hola"
$dom = new DOMDocument('1.0', 'UTF-8'); // Crea un nuevo documento XML con versión 1.0 y codificación UTF-8
$dom->formatOutput = true; // Indica que la salida debe mostrarse formateada (con saltos y sangrado)
$usuarios = $dom->createElement('usuarios'); // Crea un elemento XML llamado <usuarios>
$dom->appendChild($usuarios); // Añade ese elemento como nodo raíz del documento
$usuario = $dom->createElement('usuario'); // Crea un elemento <usuario>
$usuario->setAttribute('id', 1); // Añade un atributo id="1" al elemento <usuario>
$usuario->appendChild($dom->createElement('nombre', 'Carlos')); // Crea un nodo <nombre>Carlos</nombre> y lo mete dentro de <usuario>
$usuarios->appendChild($usuario); // Añade el nodo <usuario> dentro del nodo raíz <usuarios>
echo $dom->saveXML(); // Genera y muestra el XML completo en formato texto
Salida resultante del XML:
<?xml version="1.0" encoding="UTF-8"?>
<usuarios>
<usuario id="1">
<nombre>Carlos</nombre>
</usuario>
</usuarios>
| Nombre | Explicación en php.net | Propósito | Características Principales | Ejemplos de uso |
|---|---|---|---|---|
| DateTime | https://www.php.net/manual/es/class.datetime.php | Manejo de fechas y horas | Crear, modificar, comparar y formatear fechas; manejo de zonas horarias | Cálculo de intervalos, timestamps legibles, programación de tareas |
| PDO | https://www.php.net/manual/es/class.pdo.php | Conexión y comunicación con motores SQL | Consultas preparadas, transacciones, soporte multi-DB, modos de error | Conectar a MySQL/PostgreSQL/SQLite, ejecutar queries seguras |
| PDOStatement | https://www.php.net/manual/es/class.pdostatement.php | Representa una sentencia SQL preparada | prepare, execute, fetch, bind de parámetros |
SELECT, INSERT, UPDATE, DELETE con parámetros |
| PDOException | https://www.php.net/manual/es/class.pdoexception.php | Manejo de errores de PDO | Excepciones detalladas sobre conexión o consultas | Captura de errores SQL y fallos de conexión |
| DOMDocument | https://www.php.net/manual/es/class.domdocument.php | Manipulación de XML y HTML mediante DOM | Cargar, modificar, recorrer y guardar documentos; acceso completo al DOM | Parsing de HTML, generación de XML, modificación estructural de documentos |
Determina si una variable está definida y su valor no es NULL.
Para qué sirve:
Verificar si existen claves en $_POST, $_GET, $_SESSION, etc.
Evitar errores al acceder a variables no definidas.
if (isset($_REQUEST['submit'])) { //Comprueba si existe el parámetro 'submit' en la petición (GET o POST)
echo "El botón de envio ha sido pulsado"; //Muestra el mensaje si el botón fue enviado
}
Comprueba si una variable está vacía, es decir:
“”, 0, “0”, null, false, [], o variable no definida.
Para qué sirve:
Validar campos de formularios.
Evitar procesar valores vacíos.
if (empty($nombre)) { //Comprueba si la variable $nombre está vacía (vacía, null, '', 0, false o no definida)
echo "El nombre está vacío."; //Muestra el mensaje si la condición se cumple
}
Devuelve el tipo de dato de una variable como cadena:
integer, string, array, boolean, object, etc.
Para qué sirve:
Depuración.
Verificación de tipos.
$numero = 5; //Asignamos el valor 5 a la variable $numero
echo gettype($numero); //Muestra el tipo de dato de $numero, en este caso "integer"
Verifica si una variable es del tipo string.
Para qué sirve:
Validar parámetros.
Comprobar tipos antes de procesarlos.
$valor = "Hola mundo"; //Asignamos una cadena de texto a la variable
if (is_string($valor)) { //Comprobamos si $valor es de tipo string
echo "La variable es una cadena"; //Se ejecuta porque $valor es un string
} else {
echo "La variable no es una cadena";
}
Reemplaza todas las ocurrencias de una subcadena por otra.
Para qué sirve:
Limpiar texto.
Reemplazar palabras o símbolos.
Construir cadenas dinámicamente.
echo str_replace("buenos días", "buenas noches", "Hola buenos días"); //Busca la cadena 'buenos días' y la reemplaza por 'buenas noches' en la cadena indicada al final
Convierte una cadena a minúsculas.
/*
También existe strtoupper(), hace lo mismo solamente que pasa el texto a mayusculas en vez de a minusculas
*/
Para qué sirve:
Comparaciones insensibles a mayúsculas/minúsculas.
Normalizar texto.
echo strtolower("MAYUSCULA A MINUSCULA"); //Devolvería 'mayuscula a minuscula'
Formatea un número con miles y decimales personalizados.
Para qué sirve:
Mostrar valores monetarios.
Generar números con formato local.
echo number_format(1234.56, 2, ',', '.'); //Formatea el número 1234.56 con 2 decimales, coma como separador decimal y punto como separador de miles, imprime: 1.234,56
Devuelve el valor de una constante, cuyo nombre se pasa como cadena.
Para qué sirve:
Acceder a constantes dinámicamente.
Usar configuración basada en texto.
define("alturaEnCentimetros", 170); //Define una constante llamada alturaEnCentimetros con valor 170
echo constant("alturaEnCentimetros"); //Devuelve el valor de la constante alturaEnCentimetros, en este caso 170
Devuelve un array con todas las extensiones PHP cargadas (PDO, mbstring, curl, etc.)
Para qué sirve:
Verificar extensiones para compatibilidad.
Diagnóstico técnico.
print_r(get_loaded_extensions()); //Muestra un array con todas las extensiones de PHP que están cargadas en el entorno
Lee todo el contenido de un archivo y lo devuelve como una cadena.
Para qué sirve:
Leer archivos de texto.
Procesar JSON o XML.
Consumir URLs (si está permitido).
$departamentos = file_get_contents('departamentos.txt'); //Lee todo el contenido del archivo 'departamentos.txt' y lo guarda en la variable $departamentos
echo $departamentos; // Muestra el contenido del archivo como texto
Escribe texto en un archivo.
Por defecto sobrescribe, pero con FILE_APPEND agrega al final.
Para qué sirve:
Guardar logs.
Escribir archivos temporales.
Guardar datos generados.
file_put_contents('log.txt', $error, FILE_APPEND); //Escribe el contenido de la variable $error en el archivo 'log.txt', FILE_APPEND hace que se añada al final sin sobrescribir lo existente
Verifica si un archivo o directorio existe.
Para qué sirve:
Validar rutas antes de leer o incluir.
Evitar errores al cargar archivos.
if (file_exists('configPDO.php')) { //Comprueba si el archivo 'configPDO.php' existe en el directorio actual
echo "Existe."; //Muestra "Existe." si el archivo existe
}
Incluye un archivo solo una vez.
Si no existe, detiene la ejecución (error fatal).
Para qué sirve:
Cargar clases, funciones o configuraciones.
Evitar incluir el mismo archivo múltiples veces.
require_once '../config/configPDO.php'; // Incluye el archivo 'configPDO.php' situado en la carpeta 'config' solo una vez, si ya se incluyó antes no se vuelve a cargar
| Nombre | Enlace a php.net | Para qué sirve |
|---|---|---|
| isset | https://www.php.net/manual/es/function.isset.php | Verifica si una variable existe y no es NULL. |
| empty | https://www.php.net/manual/es/function.empty.php | Comprueba si una variable está vacía o no definida. |
| gettype | https://www.php.net/manual/es/function.gettype.php | Devuelve el tipo de dato de una variable. |
| is_string | https://www.php.net/manual/es/function.is-string.php | Determina si una variable es una cadena. |
| str_replace | https://www.php.net/manual/es/function.str-replace.php | Reemplaza texto dentro de una cadena. |
| strtolower | https://www.php.net/manual/es/function.strtolower.php | Convierte una cadena a minúsculas. |
| number_format | https://www.php.net/manual/es/function.number-format.php | Formatea números con separadores y decimales. |
| constant | https://www.php.net/manual/es/function.constant.php | Obtiene el valor de una constante por su nombre. |
| get_loaded_extensions | https://www.php.net/manual/es/function.get-loaded-extensions.php | Lista todas las extensiones de PHP cargadas. |
| Nombre | Enlace a php.net | Para qué sirve |
|---|---|---|
| file_get_contents | https://www.php.net/manual/es/function.file-get-contents.php | Lee el contenido completo de un archivo. |
| file_put_contents | https://www.php.net/manual/es/function.file-put-contents.php | Escribe datos en un archivo (o añade con FILE_APPEND). |
| file_exists | https://www.php.net/manual/es/function.file-exists.php | Comprueba si un archivo o directorio existe. |
| require_once | https://www.php.net/manual/es/function.require-once.php | Incluye un archivo solo una vez; detiene el script si no se encuentra. |