Lección 2 de 7 25 min

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

  1. Verificar tu versión de PHP (8.1+) y Composer.
  2. Crear un proyecto PHP mínimo con composer init.
  3. Instalar symfony/http-client (recomendado) en lugar de cURL crudo.
  4. Instalar vlucas/phpdotenv para cargar variables de entorno desde un fichero .env.
  5. 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-client y vlucas/phpdotenv instalados.
  • Tienes el fichero .env con tus API keys y está en .gitignore.
  • Has ejecutado php test.php y 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".

1 ¿Cuál es la versión MÍNIMA recomendada de PHP para hacer este curso?

2 ¿Para qué se usa Composer en este proyecto?

3 ¿Por qué NO debes pegar tu API key directamente en el código PHP y subirlo a Git?

4 En el archivo .env, ¿dónde se guarda?

Cuando termines, guarda tu avance. Así podrás continuar desde tu panel y desbloquear el certificado al completar el curso.