PHP में आर्किटेक्चरल पैटर्न: MVC से CQRS तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

आर्किटेक्चर क्यों सब कुछ तय करता है (और आपकी चाय अब ठंडी नहीं होगी)

\n

कल्पना कीजिए कि आप एक घर बना रहे हैं। आप ईंटों को बेतरतीब ढंग से रख सकते हैं, उन्हें च्युइंग गम से जोड़ सकते हैं, और उम्मीद कर सकते हैं कि वह सर्दियों तक टिका रहेगा। या फिर आप नींव, दीवारों और छत को इस तरह डिज़ाइन कर सकते हैं कि घर तूफान और रिश्तेदारों के आक्रमण दोनों को झेल जाए। PHP की दुनिया में बिल्कुल यही होता है। आर्किटेक्चरल पैटर्न वे ब्लूप्रिंट हैं जो आपके कोड को "चलता है और ठीक है" से "चलता है, स्केल होता है, और आपको पागल नहीं करता" में बदल देते हैं।

\n

जब मैंने PHP में कोडिंग शुरू की थी, मेरे प्रोजेक्ट्स विशाल मोनोलिथ हुआ करते थे। एक ही index.php फ़ाइल में SQL क्वेरी, HTML मार्कअप और बिज़नेस लॉजिक सब साथ-साथ रहते थे। यह तब तक काम करता था जब तक क्लाइंट कोई नई सुविधा नहीं माँगता था। फिर नर्क शुरू हो जाता था। आज मैं आपको दिखाऊंगा कि इस नर्क से कैसे बचा जाए। हम PHP में प्रमुख आर्किटेक्चरल पैटर्न को समझेंगे - क्लासिक से लेकर आधुनिक दृष्टिकोणों तक। चलिए शुरू करते हैं!

\n\n

MVC (Model-View-Controller): सभी पैटर्न के दादा

\n

अगर आपने Laravel, Symfony या Yii2 पर लिखा है, तो आप MVC से पहले ही मिल चुके हैं। यह PHP का मूलभूत आर्किटेक्चरल पैटर्न है जो एप्लिकेशन को तीन भागों में बांटता है:

\n
    \n
  • Model — डेटा और बिज़नेस लॉजिक (DB संचालन, वैलिडेशन, गणना)।
  • \n
  • View — प्रदर्शन (HTML, टेम्पलेट, JSON)।
  • \n
  • Controller — कड़ी: अनुरोध लेता है, Model को कॉल करता है और डेटा View को भेजता है।
  • \n
\n

MVC मुख्य समस्या का समाधान करता है - जिम्मेदारियों का विभाजन। अब HTML में SQL नहीं होगा। कोड पढ़ने योग्य, परीक्षण योग्य और रखरखाव योग्य बन जाता है।

\n\n

शुद्ध PHP में MVC का उदाहरण

\n
// Model: User.php\nclass User {\n    public function find(int $id): ?array {\n        $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');\n        $stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');\n        $stmt->execute([$id]);\n        return $stmt->fetch() ?: null;\n    }\n}\n\n// Controller: UserController.php\nclass UserController {\n    public function show(int $id): void {\n        $userModel = new User();\n        $user = $userModel->find($id);\n        if (!$user) {\n            http_response_code(404);\n            echo 'उपयोगकर्ता नहीं मिला';\n            return;\n        }\n        // डेटा View को भेजें\n        require 'views/user.php';\n    }\n}\n\n// View: views/user.php\n<h1><?= htmlspecialchars($user['name']) ?></h1>\n<p>ईमेल: <?= htmlspecialchars($user['email']) ?></p>
\n

कब उपयोग करें: मध्यम जटिलता के वेब एप्लिकेशन के लिए। अगर आपके पास एक साधारण ब्लॉग या ई-कॉमर्स साइट है - MVC आपकी पसंद है। लेकिन सावधान रहें: अगर कंट्रोलर मोटे (Fat Controllers) हो जाते हैं, तो पैटर्न अपना अर्थ खो देता है।

\n\n

Active Record: सादगी और गति

\n

Active Record पैटर्न वह है जब ऑब्जेक्ट एक साथ DB में एक पंक्ति और बिज़नेस लॉजिक दोनों का प्रतिनिधित्व करता है। Laravel Eloquent या Yii2 ActiveRecord याद है? यह वही है। प्रत्येक मॉडल डेटाबेस क्वेरी, वैलिडेशन नियम और संबंधों का प्रतिनिधित्व करता है।

\n\n

Active Record का उदाहरण (Eloquent शैली)

\n
class User extends ActiveRecord {\n    // गुण तालिका के कॉलम से मेल खाते हैं\n    public int $id;\n    public string $name;\n    public string $email;\n\n    public function save(): bool {\n        // INSERT/UPDATE लॉजिक\n        if ($this->id) {\n            // UPDATE\n        } else {\n            // INSERT\n        }\n        return true;\n    }\n\n    public static function find(int $id): ?self {\n        // SELECT * FROM users WHERE id = $id\n    }\n}\n\n// उपयोग\n$user = new User();\n$user->name = 'राहुल';\n$user->email = 'rahul@example.com';\n$user->save(); // सरल और स्पष्ट
\n

लाभ: जल्दी लिखा जाता है, शुरुआती लोगों के लिए सहज है। नुकसान: एकल जिम्मेदारी के सिद्धांत (SOLID का Single Responsibility) का उल्लंघन करता है। मॉडल डेटा और उसे सहेजने के तरीके दोनों के बारे में जानता है। जटिल प्रो

ब्लॉग

पुस्तक अनुशंसाएँ