Pourquoi un portfolio PHP est votre ticket d'entrée ?
\n\nLe monde de l'IT évolue tous les six mois, mais PHP reste un pilier solide : il alimente 78% de tous les sites web côté serveur (y compris WordPress, Laravel et Symfony). Si vous apprenez PHP et visez une offre d'emploi, un simple CV ne suffira pas — vous avez besoin de projets concrets à montrer et à expliquer en entretien.
\n\nDans cet article, je vous présente 7 idées de projets pour votre portfolio PHP — des scripts simples aux microservices complets. Chaque projet est accompagné de code réel et d'explications, pour vous aider à propulser votre carrière. C'est parti !
\n\n1. Mini-blog en PHP pur (sans framework)
\n\nPourquoi ce projet ?
\nMontrer que vous comprenez le fonctionnement des requêtes, sessions et bases de données sans la magie d'un framework. C'est la base que l'on vous demandera à chaque entretien de niveau intermédiaire.
\n\nCe qu'il faut implémenter :
\n- \n
- Inscription / connexion (hachage des mots de passe, sessions) \n
- CRUD pour les articles (création, édition, suppression) \n
- Routage simple (un seul index.php comme point d'entrée) \n
- Affichage de la liste des articles avec pagination \n
Exemple de code : routeur simple
\n// index.php — point d'entrée\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 Page non trouvée';\n break;\n}\n\n\nCe code montre que vous savez manipuler les tableaux superglobaux et construire une architecture manuellement. Un excellent point de départ pour votre portfolio.
\n\n2. API REST pour notes (Laravel ou Slim)
\n\nPourquoi une API ?
\nLes projets modernes reposent de plus en plus sur les microservices et les SPA. Savoir écrire une API REST propre est une compétence recherchée dans 90% des offres d'emploi PHP.
\n\nCe que doit contenir le projet :
\n- \n
- Routes : GET, POST, PUT, DELETE pour la ressource "Note" \n
- Validation des données entrantes \n
- Authentification JWT (ou clés API) \n
- Documentation Swagger/OpenAPI \n
Exemple : contrôleur 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\nUn tel projet pour votre portfolio PHP montre immédiatement que vous maîtrisez Eloquent, les middleware et les principes REST. Vous pouvez même ajouter des tests avec PHPUnit.
\n\n3. Bot Telegram pour suivre le taux de change
\n\nPourquoi un bot ?
\nLes bots Telegram sont très tendance. Les clients les adorent, ils sont faciles à déployer (sur un hébergement gratuit) et démontrent parfaitement votre capacité à travailler avec des API externes.
\n\nCe qu'il faut faire :
\n- \n
- Se connecter à BotFather, obtenir un token \n
- Écrire un gestionnaire de commandes /start, /rate USD, /rate EUR \n
- Récupérer le taux depuis une API ouverte \n
- Mettre en cache le résultat (pour ne pas solliciter l'API à chaque seconde) \n
Exemple de code : récupération du taux
\nfunction getExchangeRate($currency) {\n $cacheFile = __DIR__ . "/cache/{$currency}.json";\n if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) {\n return