À une époque dominée par les frameworks (Laravel, Symfony, React, Vue), j'ai pris ce que beaucoup considéreraient comme une décision controversée : créer une plateforme de trading complète en utilisant Vanilla PHP et Vanilla JavaScript. Pas de magie Laravel, pas de complexité React, pas d'enfer de dépendance npm. Juste du code pur et sans faille.
Étais-je fou ? Peut être. Mais à la fin de ce voyage, j'avais créé Tradity, une application Web progressive qui diffuse en direct les prix des crypto-monnaies, exécute les transactions en temps réel et se sent aussi rapide que n'importe quelle plate-forme basée sur un framework, tout en gardant un contrôle total sur chaque ligne de code.
C’est l’histoire de la façon dont la simplicité a vaincu la complexité et pourquoi parfois les anciennes méthodes sont les meilleures.
Je voulais créer un simulateur de trading d'actions/crypto qui pourrait :
Chaque tutoriel criait : "Utilisez Laravel ! Utilisez Next.js ! Utilisez [insérer le framework ici] !"
Mais les frameworks ont des bagages :
Puis ça m'a frappé : PHP est déjà un framework. Il a un routage ($_SERVEUR['REQUEST_URI']), création de modèles (?php echo $data ?) et l'accès à la base de données (mysqli,AOP). JavaScript a une API de récupération, des modules ES6 et une prise en charge native de WebSocket.
Décision prise : c’est la pile vanille.
// index.php - Le cœur du backend $request = parse_data-url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $méthode = $_SERVER['REQUEST_METHOD']; // Routage simple et explicite if ($request === '/api/auth/login' && $method === 'POST') { AuthController::login(); } elseif ($request === '/api/trades' && $method === 'GET') { TradeController::getTradeHistory(); } else { Response::error('Point de terminaison introuvable', 404); }Pourquoi c'est beau :
J'ai adopté une approche d'architecture propre :
Contrôleurs → Services → ModèlesExemple : exécuter une transaction
// Classe TradeController.php TradeController { fonction statique publique exécuterTrade() { $data = json_decode(file_get_contents('php://input'), true); // Le contrôleur ne gère que HTTP $result = TradeService::executeTrade( $data['user_id'], $data['symbol'], $data['type'], $data['amount'] ); Réponse :: succès ($ résultat); } } // TradeService.php - La logique métier réside ici class Trade...
[Courte citation de 8% de l'article original]