Prerequisitos - instalacion de Homebrew y asdf en ubuntu
📘 Documentación Oficial
⭐ Frameworks Populares
(ordenados de menor a mayor curva de aprendizaje)
- CodeIgniter — https://codeigniter.com/user_guide/
- Laravel — https://laravel.com/docs
- Symfony — https://symfony.com/doc
🛠️ Instalación de PHP en Ubuntu
sudo apt update
sudo apt install php php-cli php-common php-mbstring php-xml php-curl php-zip
🍺 Instalación con Homebrew
brew install php
📦 Gestor de paquetes estándar: Composer
Instalación:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
Verificar:
composer --version
🔧 Instalar distintas versiones con ASDF
Dependencias:
sudo apt update
sudo apt install autoconf bison build-essential libxml2-dev libssl-dev \
libcurl4-openssl-dev pkg-config re2c libsqlite3-dev
Plugin + versión:
asdf plugin add php
asdf install php 8.2.12
asdf global php 8.2.12
📄 Ejemplo .tool-versions
php 8.2.12
📝▶️ Crear y ejecutar un archivo PHP
Crear archivo: touch hola.php
Contenido de hola.php
<?php
echo "Hola Mundo PHP\n";
PHP puede correrse de 2 formas: como un archivo de sistema, lo que lo hace útil para script locales, podrías remplazar script de bash por ejemplo, y en un servidor web. PHP ya trae un servidor embebido, pero es más normal usarlo con Apache o Nginx.
Ejecutar Localmente:
php hola.php
Servidor embebido:
php -S localhost:8000
👉 visitar:
http://localhost:8000
🟦 Ejemplo básico en PHP
Que Hace:
- Definir el nombre del parámetro de consulta (query parameter)
- Obtener el valor del parámetro de consulta de la URL.
- Se usa $_GET para acceder a los query parameters.
- htmlspecialchars se usa por seguridad, para evitar ataques XSS, al convertir caracteres especiales como < y > en entidades HTML.
- Se dibuja la variable recivida en el query parameter dentro de la etiqueta
📝 Crear archivo: touch index.php
▶️ Contenido de index.php
<?php
$paramName = 'username';
$textoRecibido = isset($_GET[$paramName])
? htmlspecialchars($_GET[$paramName])
: "No se ha proporcionado un nombre.";
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mensaje Recibido</title>
</head>
<body style="text-align: center">
<h1>Nombre de usuario en la URL: "<?php echo $textoRecibido; ?>"</h1>
<p>Prueba a cambiar el valor de `texto` en la barra de direcciones.</p>
<b><a href="/test.php?texto=cambiado%20en%20url">Click para cambio en url</a></b>
</body>
</html>
correr el proyecto / levantar el servidor
php -S localhost:8000
👉 visitar:
http://localhost:8000/?username=Homero
EJ:2 Json API Rest
Que Hace:
- Lee los datos desde un archivo
data.json - expones 1 endpoint con esos datos
- Una Lista de personajes en
/characters - y los datos de un personaje por id
/characters/:id
- Una Lista de personajes en
Ejemplo de archivo: data.json
[
{
"id": 1,
"age": 39,
"name": "Homer Tompson",
"portrait_path": "https://cdn.thesimpsonsapi.com/500/character/1.webp"
},
{
"id": 2,
"age": 39,
"name": "Marge Simpson",
"portrait_path": "https://cdn.thesimpsonsapi.com/500/character/2.webp"
},
]
Archivo PHP: api.php
<?php
header("Content-Type: application/json");
// Obtener la ruta actual
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// Cargar archivo JSON
function loadCharacters() {
$json = file_get_contents("data.json");
return json_decode($json, true);
}
$characters = loadCharacters();
// GET /characters → lista completa
if ($_SERVER['REQUEST_METHOD'] === 'GET' && $path === '/characters') {
echo json_encode($characters);
exit;
}
// GET /characters/:id → buscar por ID
if (
$_SERVER['REQUEST_METHOD'] === 'GET'
&& preg_match('#^/characters/(\d+)$#', $path, $matches)
) {
$id = intval($matches[1]);
foreach ($characters as $c) {
if ($c['id'] === $id) {
echo json_encode($c);
exit;
}
}
http_response_code(404);
echo json_encode(["error" => "Personaje no encontrado"]);
exit;
}
// Ruta no encontrada
http_response_code(404);
echo json_encode([
"error" => "Ruta no encontrada",
"url_lista" => "http://localhost:8001/characters",
"url_personaje" => "http://localhost:001/characters/1"
]);
exit;
correr el proyecto / levantar el servidor
php -S localhost:8001 api.php
👉 visitar:
http://localhost:8001/characters
Para probar el sanitizado de url:
http://localhost:8001/characters/1

Top comments (0)