PHP (Hypertext Preprocessor) es un lenguaje de programación de propósito general, diseñado principalmente para el desarrollo web.
Se ejecuta en el servidor y genera HTML dinámico para el cliente.
Instalación y configuración
Instalar PHP en Windows
Visita php.net/downloads y descarga la última versión de PHP para Windows.
Instalar PHP en Linux
Instala PHP en un sistema Linux usando apt.
sudo apt update
sudo apt install php
Verificar versión de PHP
Comprueba la versión de PHP instalada.
php -v
Ejecutar un script PHP desde terminal
Puedes ejecutar scripts PHP directamente desde la línea de comandos.
php script.php
Introducción
Sintaxis básica de PHP
Un script PHP se incluye entre etiquetas <?php ... ?> en un archivo .php.
<?php
echo "¡Hola, mundo!";
?>
Comentarios en PHP
Puedes agregar comentarios con //, # o /* */ para comentarios en bloque.
// Comentario de una línea
# Comentario de una línea
/* Comentario
de varias líneas */
Variables y tipos de datos
Declaración de variables
Las variables en PHP se declaran con el signo $ seguido del nombre de la variable.
$variable = "valor";
Tipos de datos en PHP
PHP es un lenguaje débilmente tipado. Los principales tipos de datos son:
int(enteros)float(números decimales)string(cadenas de texto)bool(booleano)arrayobject
Ver tipo de variable
Utiliza gettype() para verificar el tipo de una variable.
echo gettype($variable);
Conversión de tipos
Para convertir un tipo de dato a otro explícitamente, se usa el casting.
$entero = (int) "10"; // Convertir string a entero
Operadores en PHP
Operadores aritméticos
PHP soporta los operadores básicos de suma, resta, multiplicación y división.
$a + $b; // Suma
$a - $b; // Resta
$a * $b; // Multiplicación
$a / $b; // División
$a % $b; // Módulo
Operadores de comparación
Compara dos valores. Retornan true o false.
$a == $b; // Igual
$a === $b; // Igual y del mismo tipo
$a != $b; // Diferente
$a !== $b; // Diferente y distinto tipo
$a > $b; // Mayor que
$a < $b; // Menor que
Operadores lógicos
Se utilizan para realizar operaciones lógicas.
$a && $b; // AND lógico
$a || $b; // OR lógico
!$a; // Negación
Estructuras de control
Condicionales: if, else, elseif
PHP utiliza if, else y elseif para controlar el flujo del programa.
if ($a > $b) {
echo "$a es mayor que $b";
} elseif ($a == $b) {
echo "$a es igual a $b";
} else {
echo "$a es menor que $b";
}
Switch case
Para evaluar múltiples condiciones.
$color = "rojo";
switch ($color) {
case "rojo":
echo "El color es rojo";
break;
case "azul":
echo "El color es azul";
break;
default:
echo "Color desconocido";
}
Bucles
Los bucles permiten ejecutar un bloque de código repetidamente.
For
for ($i = 0; $i < 10; $i++) {
echo $i;
}
While
$i = 0;
while ($i < 10) {
echo $i;
$i++;
}
Foreach
$array = array(1, 2, 3, 4);
foreach ($array as $valor) {
echo $valor;
}
Funciones
Definir una función
Las funciones en PHP se definen con la palabra clave function.
function suma($a, $b) {
return $a + $b;
}
echo suma(2, 3); // Imprime 5
Funciones anónimas y callback
PHP también permite definir funciones anónimas.
$anonima = function($nombre) {
return "Hola, " . $nombre;
};
echo $anonima("Mundo"); // Imprime "Hola, Mundo"
Parámetros por referencia
Los parámetros pueden pasarse por referencia usando &.
function incrementar(&$numero) {
$numero++;
}
$a = 5;
incrementar($a);
echo $a; // Imprime 6
Manejo de Arrays
PHP tiene varios tipos de arrays: indexados y asociativos.
Array indexado
Un array en PHP se puede crear con la función array() o con [].
<?php
$frutas = ["manzana", "banana", "naranja"];
echo $frutas[0]; // manzana
?>
Array asociativo
Un array asociativo utiliza claves en lugar de índices numéricos.
<?php
$persona = ["nombre" => "Luis", "edad" => 21];
echo $persona["nombre"]; // Luis
?>
Recorrer arrays
Usa foreach para recorrer arrays.
foreach ($array as $valor) {
echo $valor;
}
Funciones útiles para arrays
PHP incluye varias funciones integradas para trabajar con arrays.
- Agregar elemento al final del array
array_push($array, "nuevo");
- Eliminar el último elemento
array_pop($array);
- Contar elementos del array
echo count($array);
Programación Orientada a Objetos (POO)
Clases y objetos
PHP soporta la programación orientada a objetos con clases, objetos, herencia y más.
class Persona {
public $nombre;
public function __construct($nombre) {
$this->nombre = $nombre;
}
public function saludar() {
echo "Hola, soy " . $this->nombre;
}
}
$persona = new Persona("Luis");
$persona->saludar(); // Imprime "Hola, soy Luis"
Herencia
Las clases pueden heredar de otras clases.
class Estudiante extends Persona {
public $carrera;
public function __construct($nombre, $carrera) {
parent::__construct($nombre);
$this->carrera = $carrera;
}
public function estudiar() {
echo $this->nombre . " está estudiando " . $this->carrera;
}
}
$estudiante = new Estudiante("Ana", "Ingeniería");
$estudiante->estudiar(); // Imprime "Ana está estudiando Ingeniería"
Encapsulamiento
El acceso a las propiedades y métodos puede controlarse con modificadores de acceso public, private, protected.
class Persona {
private $edad;
public function setEdad($edad) {
$this->edad = $edad;
}
public function getEdad() {
return $this->edad;
}
}
Interfaces
Las interfaces permiten definir qué métodos deben implementar las clases.
interface Figura {
public function area();
}
class Cuadrado implements Figura {
public $lado;
public function __construct($lado) {
$this->lado = $lado;
}
public function area() {
return $this->lado * $this->lado;
}
}
Formularios
Obtener datos de un formulario
PHP puede manejar datos enviados (GET/POST) por un formulario HTML.
// Obtener datos con método POST
$nombre = $_POST['nombre'];
// Obtener datos con método GET
$edad = $_GET['edad'];
Validación de datos
Validar datos es esencial para la seguridad.
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Correo válido";
} else {
echo "Correo inválido";
}
Sanitizar datos
Se usa para limpiar entradas y prevenir ataques de inyección.
$nombre = filter_var($_POST['nombre'], FILTER_SANITIZE_STRING);
Sesiones y cookies
Iniciar sesión
Las sesiones permiten almacenar datos en el servidor entre peticiones.
session_start();
$_SESSION['usuario'] = 'Luis';
Cerrar sesión
Destruye todas las variables de sesión.
session_destroy();
Cookies
Las cookies permiten almacenar datos en el navegador del usuario.
setcookie("usuario", "Luis", time() + 3600);
Leer cookies
Para obtener el valor de una cookie.
echo $_COOKIE['usuario'];
Manejo de archivos
Leer un archivo
Utiliza fopen, fread, o file_get_contents para leer archivos.
<?php
$contenido = file_get_contents("archivo.txt");
echo $contenido;
?>
Escribir en un archivo
Usa fwrite para escribir en archivos.
<?php
$archivo = fopen("archivo.txt", "w");
fwrite($archivo, "Nuevo contenido");
fclose($archivo);
?>
Conexión a bases de datos
Conectar a una base de datos MySQL
Usa mysqli para conectar a una base de datos.
<?php
$conn = new mysqli("localhost", "usuario", "contraseña", "base_datos");
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
?>
Realizar consultas SQL
Ejecuta una consulta SQL y obtiene resultados.
<?php
$resultado = $conn->query("SELECT * FROM usuarios");
while ($fila = $resultado->fetch_assoc()) {
echo $fila["nombre"];
}
?>
Cerrar conexión
Siempre cierra la conexión después de terminar.
<?php
$conn->close();
?>
Conectar a una base de datos MySQL usando PDO
PHP usa PDO para conectarse a bases de datos.
try {
$pdo = new PDO('mysql:host=localhost;dbname=mi_base', 'usuario', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT * FROM tabla");
while ($row = $stmt->fetch()) {
echo $row['columna'];
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
Errores y depuración
Mostrar errores
Configura PHP para mostrar todos los errores durante el desarrollo.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
Registrar errores en un archivo
Registra los errores en un archivo de log.
<?php
ini_set("log_errors", 1);
ini_set("error_log", "/ruta/error_log.txt");
?>