Prerequisites โ installation of Homebrew and asdf on Ubuntu
๐ Official Documentation
โญ Popular Frameworks
(ordered from lowest to highest learning curve)
- CodeIgniter โ https://codeigniter.com/user_guide/
- Laravel โ https://laravel.com/docs
- Symfony โ https://symfony.com/doc
๐ ๏ธ Installation on Ubuntu
sudo apt update
sudo apt install php php-cli php-common php-mbstring php-xml php-curl php-zip
๐บ Installation with Homebrew
brew install php
๐ฆ Standard package manager: Composer
Installation:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
Verify:
composer --version
๐ง Install different versions with ASDF
Dependencies:
sudo apt update
sudo apt install autoconf bison build-essential libxml2-dev libssl-dev \
libcurl4-openssl-dev pkg-config re2c libsqlite3-dev
Plugin + version:
asdf plugin add php
asdf install php 8.2.12
asdf global php 8.2.12
๐ Example .tool-versions
php 8.2.12
๐โถ๏ธ Create and run a PHP file
Create file: touch hola.php
Content of hola.php:
<?php
echo "Hola Mundo PHP\n";
PHP can be run in 2 ways: as a system file, which makes it useful for local scriptsโyou could replace bash scripts, for exampleโand in a web server. PHP already comes with an embedded server, but itโs more common to use it with Apache or Nginx.
Run locally:
php hola.php
Embedded server:
php -S localhost:8000
๐ฆ Basic example in PHP
What it does:
- Defines the name of the query parameter.
- Gets the query parameter value from the URL.
-
$_GETis used to access query parameters. -
htmlspecialcharsis used for security, to prevent XSS attacks by converting special characters like<and>into HTML entities.
-
- It draws the value received through the query parameter inside the
<h1>tag.
๐ Create file: touch index.php
โถ๏ธ Content of 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>
run the project / start the server
php -S localhost:8000
๐ visit:
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"
},
]
๐ Create file: touch api.php
โถ๏ธ Content of 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:8001/characters/1"
]);
exit;
run the project / start the server
php -S localhost:8001 api.php
๐ visit:
http://localhost:8001/characters
Test API Url:
http://localhost:8001/characters/1

Top comments (0)