logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल

1.4. चलिए अपना MVC फ्रेमवर्क लिखना शुरू करते हैं

07/10/2025, by Ivan

हम पहले ही यह चर्चा कर चुके हैं कि हमारे फ्रेमवर्क में क्या-क्या होना चाहिए, अब समय है इसे वास्तव में लागू करने का। शुरुआत के लिए, आपको एक वेब सर्वर की आवश्यकता होगी। आप Denwer का उपयोग कर सकते हैं, लेकिन संभव है कि आपको PHP को अपडेट करना पड़े।

आप PHP 5.5.20 के साथ Denwer को इस पेज से डाउनलोड कर सकते हैं:

https://drupalbook.org/ru/drupal/denwer-obnovlenie-php

या GitHub से:

https://github.com/levmyshkin/denwer-php-5.5.20

हमारे फ्रेमवर्क का काम index.php फ़ाइल से शुरू होगा, जो रजिस्ट्री (Registry) से ऑब्जेक्ट्स प्राप्त करेगा, आवश्यक कंट्रोलर को बुलाएगा और उसे आवश्यक डेटा सौंपेगा। कंट्रोलर बदले में आवश्यक मॉडल्स को बुला सकता है।

MVC

MVC पैटर्न का कार्यान्वयन

हमारे पास इन पैटर्न्स को लागू करने के कई तरीके हैं। हम उनमें से एक को चुनेंगे, लेकिन भविष्य में आप अपनी आवश्यकता के अनुसार कोई और तरीका अपना सकते हैं।

पिछले लेखों में हमने अपने फ्रेमवर्क की संरचना की योजना बना ली थी, अब हमें बस उसी के अनुसार फोल्डर बनाने हैं।

अब एक फ़ाइल बनाएँ Registry/registry.class.php — इसमें हम अपना रजिस्ट्री क्लास लिखेंगे।

<?php
/**
 * रजिस्ट्री ऑब्जेक्ट
 * "Registry" और "Singleton" पैटर्न को लागू करता है
 */
class Registry {
     
    private static $objects = array();
    private static $settings = array();
    private static $frameworkName = 'Framework version 0.1';
    private static $instance;
     
    private function __construct() { }
         
    public static function singleton() {
        if( !isset( self::$instance ) ) {
            $obj = __CLASS__;
            self::$instance = new $obj;
        }
        return self::$instance;
    }
     
    public function __clone() {
        trigger_error('Registry की कॉपी बनाना अनुमति नहीं है', E_USER_ERROR);
    }
     
    public function storeObject( $object, $key ) {
        require_once('objects/' . $object . '.class.php');
        self::$objects[$key] = new $object(self::$instance);
    }
     
    public function getObject( $key ) {
        if( is_object(self::$objects[$key]) ) {
            return self::$objects[$key];
        }
    }
     
    public function storeSetting( $data, $key ) {
        self::$settings[$key] = $data;
    }
     
    public function getSetting( $key ) {
        return self::$settings[$key];
    }
     
    public function getFrameworkName() {
        return self::$frameworkName;
    }
}
?>

रजिस्ट्री कैसे काम करती है और यह हमारे ऑब्जेक्ट्स को कैसे स्टोर करती है?

  • सभी ऑब्जेक्ट्स एक ऐरे में स्टोर किए जाते हैं।
  • जब कोई नया ऑब्जेक्ट जोड़ा जाता है, उसका क्लास फ़ाइल लोड किया जाता है, उसका इंस्टेंस बनाया जाता है और ऐरे में सेव किया जाता है।
  • ऑब्जेक्ट को getObject() मेथड के माध्यम से उसके key द्वारा प्राप्त किया जा सकता है।

रजिस्ट्री की दूसरी कॉपी बनने से कैसे रोका जाता है?

  • कन्स्ट्रक्टर private है, जिससे इसे बाहर से नहीं बुलाया जा सकता।
  • ऑब्जेक्ट की कॉपी बनाने की कोशिश पर एरर ट्रिगर होती है।
  • यदि आपको फ्रेमवर्क के किसी भी हिस्से से रजिस्ट्री तक पहुंचना है, तो आप Registry::singleton() का उपयोग कर सकते हैं।

अब जब हमारे पास रजिस्ट्री है, चलिए index.php लिखते हैं — यही हमारे फ्रेमवर्क का एंट्री पॉइंट होगा।

Index.php

index.php — हमारे फ्रेमवर्क की मुख्य फाइल है, जो हर रिक्वेस्ट पर सबसे पहले चलती है।

आगे चलकर हम .htaccess के जरिए सुंदर URLs (ЧПУ) जोड़ेंगे। लेकिन फिलहाल, इस कोड को समझते हैं:

<?php
/**
 * Framework
 * Framework loader — हमारे फ्रेमवर्क का एंट्री पॉइंट
 */

// सत्र शुरू करें
session_start();

// आवश्यक कॉन्स्टेंट्स सेट करें
define("APP_PATH", dirname(__FILE__) . "/");
define("FW", true);

// क्लासेस की ऑटोलोडिंग
function __autoload($class_name) {
    require_once('Controllers/' . $class_name . '/' . $class_name . '.php');
}

// रजिस्ट्री को शामिल करें
require_once('Registry/registry.class.php');
$registry = Registry::singleton();

// फ्रेमवर्क का नाम दिखाएं
print $registry->getFrameworkName();

exit();
?>

यदि सब कुछ सही किया गया है, तो ब्राउज़र में यह दिखाई देगा:

Framework version 0.1

आइए समझें कि हमारा index.php इस समय क्या करता है:

  • सेशन शुरू करता है ताकि हम डेटा कहीं से भी एक्सेस कर सकें।
  • फ्रेमवर्क की रूट डायरेक्टरी को परिभाषित करता है ताकि पाथ्स आसानी से मैनेज हो सकें।
  • ऑटो-लोडर जोड़ता है जो कंट्रोलर्स को जरूरत पड़ने पर लोड करता है।
  • रजिस्ट्री क्लास को शामिल करता है।
  • फ्रेमवर्क का नाम आउटपुट करता है।