Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP में अन्य वर्गों में कक्षाओं का उचित उपयोग?

ऐसा करने के कुछ तरीके हैं। वैश्विक चर निश्चित रूप से एक तरीका है और सबसे ज्यादा देखा भी जाता है। आप एक Singleton बना सकते हैं और अन्य सभी वर्ग जिन्हें डेटाबेस एक्सेस की आवश्यकता है, इस सिंगलटन पर कॉल करेंगे।

final class Database {
    private static $connection;

    public static function getInstance() {
        if(self::$connection == NULL) {
            self::$connection = // init your database connection
        }
        return self::$connection;
    }
}

और इस डेटाबेस कनेक्शन ऑब्जेक्ट का उपयोग किसी भी वर्ग को इसकी आवश्यकता है।

class Application {
    public function displayVar() {
        echo 'hello world';
    }
    public function getVar() {
        $db = Database::getInstance();
        $sql = foo;
        $db->query($sql);
    }
}

यह एक शुरुआत के लिए ठीक है और वैश्विक चर का उपयोग करने से परे एक महान कदम है, लेकिन आप निर्भरता इंजेक्शन . निर्भरता इंजेक्शन एक सरल अवधारणा है कि यदि किसी वर्ग की कोई बाहरी निर्भरता है, जैसे कि आपके उदाहरण में डेटाबेस कनेक्शन, तो आप स्पष्ट रूप से जरूरतमंद वर्ग को इसके निर्माता या एक विधि में पास करते हैं। तो नया कोड जोनाथन के समाधान जैसा कुछ दिखाई देगा। डिपेंडेंसी इंजेक्शन का उपयोग करने का एक बड़ा फायदा यूनिट टेस्टिंग में है, जहां आप इस वास्तविक डेटाबेस ऑब्जेक्ट को आसानी से नकली ऑब्जेक्ट से बदल सकते हैं और इसे किसी को भी पास कर सकते हैं।

class Application {
    private $db;

    public function __construct(Database $db) {
        $this->db = $db;
    }

    public function displayVar() {
        echo 'hello world';
    }

    public function getVar() {
        $sql = foo;
        $this->db->query($sql);
    }
}

छोटी परियोजनाओं के लिए, आप इसे आसानी से स्वयं कर सकते हैं। बड़ी परियोजनाओं के लिए, विभिन्न PH के लिए उपलब्ध DI फ्रेमवर्क हैं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एंटिटी फ्रेमवर्क नेस्टेड SQL क्वेरीज़ क्यों उत्पन्न करता है?

  2. PHP के साथ MySql DB में फ़ाइल अपलोड करें

  3. ONLY_FULL_GROUP_BY को अक्षम क्यों नहीं करना चाहिए

  4. Azure प्रदर्शन बेंचमार्क पर MySQL - स्केलग्रिड बनाम Azure डेटाबेस

  5. बड़े पेड़ों के साथ mysql पदानुक्रम भंडारण