¿Por qué un portafolio en PHP es tu boleto de oro?
\n\nEl mundo IT cambia cada seis meses, pero PHP sigue siendo un pilar sólido: impulsa el 78% de todos los sitios web con servidor conocido (incluyendo WordPress, Laravel y Symfony). Si estás aprendiendo PHP y quieres conseguir una oferta laboral, un currículum no es suficiente — necesitas proyectos que puedas mostrar y explicar en una entrevista.
\n\nEn este artículo he reunido 7 ideas para tu portafolio en PHP, desde scripts simples hasta microservicios completos. Cada proyecto incluye código real y una explicación de por qué impulsará tu carrera. ¡Vamos allá!
\n\n1. Mini blog en PHP puro (sin frameworks)
\n\n¿Para qué sirve?
\nDemostrar que entiendes cómo funcionan las peticiones, sesiones y bases de datos sin la magia de un framework. Es la base que preguntan en cada entrevista de nivel middle.
\n\n¿Qué implementar?
\n- \n
- Registro e inicio de sesión (hash de contraseñas, sesiones) \n
- CRUD de publicaciones (crear, editar, eliminar) \n
- Enrutamiento básico (un solo index.php como punto de entrada) \n
- Listado de publicaciones con paginación \n
Ejemplo de código: enrutador simple
\n// index.php — punto de entrada\n$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);\n\nswitch ($uri) {\n case '/':\n require 'controllers/home.php';\n break;\n case '/login':\n require 'controllers/login.php';\n break;\n case '/register':\n require 'controllers/register.php';\n break;\n default:\n http_response_code(404);\n echo '404 No encontrado';\n break;\n}\n\n\nEste código demuestra que sabes trabajar con arrays superglobales y construir arquitectura manualmente. Para un portafolio, es el punto de partida ideal.
\n\n2. API REST para notas (Laravel o Slim)
\n\n¿Por qué una API?
\nLos proyectos modernos se construyen cada vez más con microservicios y SPA. Saber escribir una API REST limpia es una habilidad requerida en el 90% de las ofertas para desarrollador PHP.
\n\n¿Qué debe incluir el proyecto?
\n- \n
- Rutas: GET, POST, PUT, DELETE para el recurso "Note" \n
- Validación de datos de entrada \n
- Autenticación con JWT (o claves API) \n
- Documentación en Swagger/OpenAPI \n
Ejemplo: controlador en Laravel
\n// app/Http/Controllers/NoteController.php\nclass NoteController extends Controller\n{\n public function index()\n {\n return Note::where('user_id', auth()->id())->get();\n }\n\n public function store(Request $request)\n {\n $validated = $request->validate([\n 'title' => 'required|string|max:255',\n 'content' => 'required|string',\n ]);\n\n $note = auth()->user()->notes()->create($validated);\n\n return response()->json($note, 201);\n }\n\n public function destroy($id)\n {\n $note = Note::findOrFail($id);\n $note->delete();\n return response()->json(null, 204);\n }\n}\n\n\nEste proyecto para portafolio en PHP demuestra de inmediato que sabes trabajar con Eloquent, middleware y principios REST. Además, puedes agregar pruebas con PHPUnit.
\n\n3. Bot de Telegram para seguimiento del tipo de cambio
\n\n¿Por qué un bot?
\nLos bots de Telegram están de moda. Los clientes los adoran, son fáciles de desplegar (puedes usar hosting gratuito) y muestran perfectamente cómo trabajar con APIs externas.
\n\n¿Qué hay que hacer?
\n- \n
- Conectarte a BotFather y obtener un token \n
- Escribir un manejador para los comandos /start, /rate USD, /rate EUR \n
- Obtener el tipo de cambio desde el banco central o cualquier API abierta \n
- Cachear el resultado (para no llamar a la API cada segundo) \n
Ejemplo de código: obtener tipo de cambio
\nfunction getExchangeRate($currency) {\n $cacheFile = __DIR__ . "/cache/{$currency}.json";\n if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) {\n return