Prepara tu entorno: Composer, cliente HTTP y variables de entorno
Vamos al taller. En esta lección preparas un proyecto PHP limpio capaz de hacer llamadas HTTP a APIs externas de forma profesional, con la API key guardada de forma segura (jamás hardcoded en el código).
Lo que vas a hacer
- Verificar tu versión de PHP (8.1+) y Composer.
- Crear un proyecto PHP mínimo con
composer init. - Instalar
symfony/http-client(recomendado) en lugar de cURL crudo. - Instalar
vlucas/phpdotenvpara cargar variables de entorno desde un fichero.env. - Hacer una primera llamada GET de prueba a una API pública.
1. Verificar PHP y Composer
Abre tu terminal y comprueba:
php --version
# Debe mostrar PHP 8.1 o superior (mejor 8.3+)
composer --version
# Debe mostrar Composer version 2.x
Si Composer no está instalado:
- macOS:
brew install composer - Linux (Ubuntu/Debian):
sudo apt install composer - Windows: descarga desde getcomposer.org/download
2. Crear el proyecto
mkdir mi-app-ia-php
cd mi-app-ia-php
composer init --no-interaction --name="midev/mi-app-ia-php" --require="php:^8.1"
composer config minimum-stability dev
composer config prefer-stable true
Esto crea composer.json y composer.lock. Sin frameworks, sin nada extra.
3. Instalar el cliente HTTP
Hay 3 opciones serias en PHP:
symfony/http-client⭐ recomendado — moderno, async-ready, PSR-18 compatible, ya instalado en cualquier proyecto Symfony.guzzlehttp/guzzle— muy popular, sólido, defecto en Laravel.- cURL nativo — sin dependencias pero verbose y propenso a errores.
Vamos con Symfony HTTP Client (vale igual en Laravel y PHP plano):
composer require symfony/http-client
4. Variables de entorno con phpdotenv
Nunca pegues API keys en el código. Sigue siendo el error #1 de seguridad de developers PHP en GitHub. Solución: variables de entorno cargadas desde un fichero .env que añades a .gitignore.
composer require vlucas/phpdotenv
Crea un fichero .env en la raíz del proyecto:
# .env (NUNCA subir a git)
ANTHROPIC_API_KEY=sk-ant-tu-clave-aqui
OPENAI_API_KEY=sk-tu-clave-aqui
Y un .gitignore para protegerlo:
/vendor/
.env
.env.local
Ahora carga las variables al inicio de tu script con:
<?php
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
echo "Clave detectada: " . (isset($_ENV['ANTHROPIC_API_KEY']) ? 'sí' : 'no');
5. Primera llamada HTTP de prueba
Crea test.php en la raíz:
<?php
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
use Symfony\Component\HttpClient\HttpClient;
$client = HttpClient::create();
// API pública gratuita de prueba — devuelve un chiste random
$response = $client->request('GET', 'https://official-joke-api.appspot.com/random_joke');
$data = $response->toArray();
echo "Tipo: {$data['type']}\n";
echo "Setup: {$data['setup']}\n";
echo "Punchline: {$data['punchline']}\n";
Ejecuta:
php test.php
Deberías ver un chiste en consola. Si esto funciona, tu entorno está listo para llamar a cualquier API HTTP del mundo, incluida la de Claude u OpenAI.
Estructura final del proyecto
mi-app-ia-php/
├── vendor/ ← Composer instala aquí (en .gitignore)
├── .env ← API keys (en .gitignore, NUNCA a git)
├── .gitignore
├── composer.json
├── composer.lock
└── test.php ← tu primer script
Checklist antes de marcar completada
- Tienes PHP 8.1+ y Composer instalados.
- Has creado el proyecto con
composer init. - Tienes
symfony/http-clientyvlucas/phpdotenvinstalados. - Tienes el fichero
.envcon tus API keys y está en.gitignore. - Has ejecutado
php test.phpy has visto un chiste en consola.
En la próxima lección sustituimos la API del chiste por la API real de Claude (o OpenAI, eliges tú). Vas a tener tu primer "hola mundo" con IA generativa desde PHP en 30 líneas limpias.
📝 Comprueba lo aprendido
Responde estas 4 preguntas y acierta al menos el 60% para desbloquear el botón "Marcar como completada".