کتابخانه ها (library) در کد ایگنایتر

کتابخانه ها (library) در کد ایگنایتر

کتابخانه ها (library) در کد ایگنایتر از پر مصرف ترین عناصر کد ایگنایتر می باشد ، شما می توانید کتابخانه ای بسازید و در آن توابعی معرفی کنید و هر موقع خواستید آن را صدا بزنید و از ان استفاده کنید و یا  کتابخانه های پیش فرض خود کد ایگنایتر را بار گزاری و استفاده کنید یا از کتابخانه های رایج در پی اچ پی استفادده کنید به طور مثال می توانید از کتابخانه tpdf در  کتابخانه استفاده کنید .

کتابخانه های سیستم در system/libraries/ موجود می باشد که شما به طریق زیر می توانید آنها را فراخوانی نمایید.

$this->load->library('class_name');

 

به طور مثال کتابخانه ای که برای اعتبار سازی فرمها استفاده می شود که در آینده به طور کامل به آن می ئردازیم

$this->load->library('form_validation');

 

همچنین شما می توانید با استفاده از آرایه های چندین کتابخانه را بارگزاری نمایید مانند مثال زیر:

$this->load->library(array('email', 'table'));

 

ساخت کتابخانه ها (library) در کد ایگنایتر

به منظور ساخت کتابخانه یک کلاس پی اچ پی که با حرف بزرگ شروه شود در پوشه application/libraries می سازیم ، توجه داشته باشید شما می توانید با اسم کلاسی که در پوشه سیستم کد ایگنایتر وجود دارد بسازید و هنگامی که اینکار را می کنید کتابخانه ای که در پوشه application/libraries ساختید الویت دارد به سیستم و ان را بارگزاری می نماید در این زمان شما می توانید آن را جایگزین کتابخانه اصلی نمایید تا بتواانید از ویژگی های کتابخانه اصلی استفاده نمایید.

تو جه داشته باشید برای نام گزاری به قواعد زیر توجه نمایید:

  • حتما با حرف بزرگ شروع شود مثل Piero
  • نام کلاس و نام فایل باید یکسان باشد
پیشنهاد پیرو برای شما :   فریم ورک چیست و دلیل استفاده از فریم ورک

برای ساخت کتابخانه ابتدا ساختار آن را همانند زیر تعریف کنید

<?php

defined('BASEPATH') OR exit('No direct script access allowed');


class Someclass {


        public function some_method()

        {

        }

}

استفاده از کتابخانه ها (library) در کد ایگنایتر

ابتدا باید کتابخانه را صدا بزنیم

$this->load->library('someclass');

و بعد هرجا که خواستیم می توانیم صدا بزنیم

$this->someclass->some_method();

ارسال پارامتر به کتابخانه ها (library) در کد ایگنایتر

شما می توانید یک کتابخانه را بسازید و در سازنده آن پارا متر های مورد نظر را دریافت و پردازش نمایید.

$params = array('type' => 'large', 'color' => 'red');


$this->load->library('someclass', $params);

در کتابخانه :

<?php defined('BASEPATH') OR exit('No direct script access allowed');


class Someclass {
      public function __construct($params)

        {

                // Do something with $params

        }

}

نکته مهم در کتابخانه ها (library) در کد ایگنایتر

توجه داشته باشید شما نمی توانید از همه عناصری که قبلا در کنترلر و مدل استفاده می کردید استفاده کنید مانند فرم و یا بانک اطلاعاتی به این منظور شما باید متد شبیه ساز $this را صدا بزنید و از ان استفاده کنید.

$CI =& get_instance();

$CI->load->helper('url');

$CI->load->library('session');

$CI->config->item('base_url');

به طور مثال

class Example_library {

        protected $CI;

        // We'll use a constructor, as you can't directly call a function

        // from a property definition.

        public function __construct()

        {

                // Assign the CodeIgniter super-object

                $this->CI =& get_instance();

        }

        public function foo()

        {

                $this->CI->load->helper('url');

                redirect();

        }

        public function bar()

        {

                echo $this->CI->config->item('base_url');

        }

جاگزاری کتابخانه شما با کتابخانه اصلی

فرض کنید می خواهید کتابخانه بسازید که جایگزین کتابخانه email شود ، به همان ترتیب معمولی پیش میرویم  application/libraries/Email.php و بعد کلاسش را تعریف می کنیم

class CI_Email {

}

توجه داشته باشید کلاسش حتما باید با CI_ شروع شود .

و برای صدا زدن نیز به صورت معمولی صدایش می زنیم

$this->load->library('email');

ارث بری در توابع جایگرین کتابخانه ها (library) در کد ایگنایتر

شما می توانید وقتی تابعی را جایگزین می کنید ، کاری کنید که از تابع اصلی آن ارث گرفته و تمامی متد آن را بارگزاری نماید . توجه داشته باشید باید اسم کلاستون حتما با MY_ شروع شود (البته این تنظیم قابل تغییر است.

$config['subclass_prefix'] = 'MY_';

به عنوان مثال:

class MY_Email extends CI_Email {


}

و در گام بعذ نیاز است در سازنده آن  سازنده والد را صدا بزنیم

class MY_Email extends CI_Email {

        public function __construct($config = array())

        {

                parent::__construct($config);

        }

}

صدا زدن کلاس ساخته شدن همانند صدا زدن عادی می باشد .

پیشنهاد پیرو برای شما :   انیمیشن در اندروید