मंगलवार, 23 फ़रवरी 2010

माडल्स Models - कोड इग्नाइटर

जो कोई भी अधिक पारंपरिक MVC तरीके को उपयोग करना चाहता है, उनके लिये कोड इग्नाइटर में माडल वैकल्पिक रूप से उपलब्ध होते हैं.

माडल क्या है?

माडल्स वे PHP Classes हैं जो कि आपके डाटाबेस की जानकारियों के साथ काम करती हैं. उदाहरण के लिये आप कोड इग्नाइटर को अपने ब्लाग को प्रबंधन के लिये उपयोग करते हैं. तो आपके पास एक माडल क्लास होनी चाहिये जिसमें वो फ़ंग्शन हों जिससे कि आप अपने ब्लाग में डाटा जोड़, घटा या संपादित कर सकें. यहां एक ऐसा ही उदाहरण दिया जा रहा है:

class Blogmodel extends Model {
    var $title   = '';
    var $content = '';
    var $date    = '';
    function Blogmodel()
    {
        // Call the Model constructor
        parent::Model();
    }
    function get_last_ten_entries()
    {
        $query = $this->db->get('entries', 10);
        return $query->result();
    }
    function insert_entry()
    {
        $this->title   = $_POST['title']; // please read the below note
        $this->content = $_POST['content'];
        $this->date    = time();
        $this->db->insert('entries', $this);
    }
    function update_entry()
    {
        $this->title   = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date    = time();
        $this->db->update('entries', $this, array('id' => $_POST['id']));
    }
}

नोट: ऊपर के उदाहरण में हमने Active Record डाटाबेस फ़ंग्शन का उपयोग क्या गया है.

नोट: Note: सरलता के लिये हम यहां $_POST वैरिएबलों को सीधे उपयोग कर रहे हैं. हालांकि ऐसा करना ठीक नही है. इसकी बजाय सामान्यत: Input Class के $this->input->post('title') का प्रयोग किया जाता है.

माडल का गठन

माडल क्लासें आपके application/models/ फ़ोल्डर में होती हैं.यदि आप उन्हे और भी अधिक अच्छे से वर्गीकृत करना चाहते हैं तो उन्हे और अंदर सब फ़ोल्डरों में भी रखा जा सकता है.

एक माडल क्लास कुछ इस प्रकार होती है:

class Model_name extends Model {
    function Model_name()
    {
        parent::Model();
    }
}

यहां Model_name आपकी क्लास का नाम है. क्लास का नाम में पहला अक्षर हमेशा कैपिटल अक्षर से लिखा होना चाहिये और बाकी छोटे अक्षरों से. एक बात यह भी सुनिश्चित कर लेना चाहिये कि आपकी क्लास आधारभूत माडल क्लास को विस्तारित कर रही हो.

फ़ाइल का नाम हमेशा छोटे अक्षरों से लिखा जाना चाहिये तथा आपकी फ़ाइल का नाम और क्लास का नाम एक ही होना चाहिये. उदाहरण के लिये यदि आपकी क्लास यह है तो:

class User_model extends Model {
    function User_model()
    {
        parent::Model();
    }
}

आपकी फ़ाइल ऐसी होगी:

application/models/user_model.php

माडल को लोड करना

सामान्यत: आपकी माडलों को कंट्रोलर फ़ंग्शनों से ही पुकारा तथा लोड किया जाता है. किसी माडल को लोड करने के लिये आप निम्नलिखित फ़ंग्शन का प्रयोग करेंगे:

$this->load->model('Model_name');

यदि आपका माडल किसी उप-फ़ोल्डर में है जैसे कि यदि आपका माडल application/models/blog/queries.php फ़ोल्डर में है, तो आपको इसे इस प्रकार लोड करना होगा:

$this->load->model('blog/queries');

एक बार लोड होने के बाद आप अपने माडल फ़ंग्शन को उसके नाम से पुकार सकते हैं. इस दौरान आपको यह ध्यान रखना होगा:

$this->load->model('Model_name');
$this->Model_name->function();

यदि आप अपने माडल को किसी दूसरे आब्जेक्ट नाम से निर्दिष्ट करना चाहते हैं तो आप ऐसा एक दूसरे पैरामीटर के द्वारा कर सकते हैं.

$this->load->model('Model_name', 'fubar');
$this->fubar->function();

यहां एक कंट्रोलर का उदाहरण दिया जा रहा है जो कि माडल को लोड करता है और व्यू दिखाता है.

class Blog_controller extends Controller {
    function blog()
    {
        $this->load->model('Blog');
        $data['query'] = $this->Blog->get_last_ten_entries();
        $this->load->view('blog', $data);
    }
}

माडलों को स्वत: लोड करना

यदि आप किसी माडल को पूरे अनुप्रयोग में उपयोग करना चाहते हैं तो आप कोडइग्निटर को इसे स्वत: लोड करने के लिये कह सकते हैं. ऐसा आप application/config/autoload.php में जाकर आटोलोड एरे में माडल का नाम भरकर कर सकते हैं.

अपने डाटाबेस से जुड़ना

जब एक माडल लोड हो चुका होता है तो यह स्वत: ही आपके डाटाबेस से नही जुड़ता है. कनेक्शन के लिये निम्नलिखित विकल्प आपके लिये उपलब्ध होते हैं:

  • आप यहां बताये गये तरीकों से आप डाटाबेस से जुड़ सकते हैं.
  • आप अपने माडल लोडिंग फ़ंग्शन में तीसरे पैरामीटर के तौर पर TRUE (boolean) गुजारकर माडल को डाटाबेस से स्वत: ही जोड़ सकते हैं:
    $this->load->model('Model_name', '', TRUE);
  • आप तीसरे पैरामीटर में डाटाबेस की नई सेटिंग्स को एरे के तौर पर भी गुजार सकते हैं.
    $config['hostname'] = "localhost";
    $config['username'] = "myusername";
    $config['password'] = "mypassword";
    $config['database'] = "mydatabase";
    $config['dbdriver'] = "mysql";
    $config['dbprefix'] = "";
    $config['pconnect'] = FALSE;
    $config['db_debug'] = TRUE;
    $this->load->model('Model_name', '', $config);

कोई टिप्पणी नहीं:

एक टिप्पणी भेजें

इस ब्लाग में प्रकाशित सामग्री कापीराईट द्वारा सुरक्षित है. बिना अनुमति इसका किसी भी प्रकार से अन्यत्र प्रयोग/प्रकाशन मूल रूप में/बदल कर उपयोग नही किया जा सकता है.

हिंदी में तकनीकी लेखन को प्रोत्साहित करें

please donate अभी तक वेब डेवलपमेंट अथवा प्रोग्रामिंग आदि से संबंधित जानकारी पर अंग्रेजी का एकाधिकार रहा है. भारत में इतने आई टी गुरू होने के बावजूद भारतीय भाषाओं में इस विषय पर लेखन नगण्य है. इस ब्लाग के माध्यम से मैं हिन्दी भाषिओं तक वेब डेवलपमेंट का ज्ञान पहुंचाने की कोशिश कर रहा हूं. अत: आप सभी से अनुरोध है कि हिंदी में तकनीकी लेखन के लिये सहयोग करें
मैं वेबसाइटें भी बनाता हूं. यदि आपको बनवानी हो तो बताएं.

ARCHIVES

इस ब्लॉग में खोजें

फ़ॉलोअर