- یکشنبه 13 خرداد 1397 ساعت 10:04
- 3.1.9
- در حال تکمیل
- فعال
هر بار که کدایگنایتر اجرا میشود، چندین کلاس پایه نیز به صورت اتوماتیک به عنوان بخشی از هسته فریمورک لود میشوند. با این حال، امکان تعویض کلاس خودتان با هر کدام از کلاسهای هسته سیستم یا حتی توسعه کلاس هسته نیز وجود دارد.
اکثر کاربران هرگز به چنین قابلیتی نیاز ندارند، اما دولوپرهایی که مایل به تغییری برجسته در هسته کدایگنایتر باشند نیز امکان جاگزین کردن یا توسعه آنها را دارند.
توجه
ایجاد تغییرات در کلاس هسته سیستم، پیامدهای زیادی دارد، بنابراین قبل از تلاش برای انجام اینکار حتما از کاری که میخواهید انجام دهید اطمینان حاصل کنید که میدانید.
لیست کلاسهای سیستم
لیست زیر، فایلهای هسته سیستم هستند که با هر بار اجرای کدایگنایتر فراخوانی میشوند:
- Benchmark
- Config
- Controller
- Exceptions
- Hooks
- Input
- Language
- Loader
- Log
- Output
- Router
- Security
- URI
- Utf8
جایگزین کردن کلاسهای هسته
برای استفاده از یکی از کلاسهای خودتان به جای کلاس پیشفرض مورد نظر، تنها کافی است که آن را در دایرکتوری application/core/ قرار دهید:
application/core/some_class.php
اگر این دایرکتوری وجود نداشت، میتوانید آن را بسازید.
هر فایل کلاسی باید همنام با یکی از نامهای لیست بالا باشد تا به جای کلاس هستهای استفاده شود که معمولا هنگام لود کدایگنایتر فراخوانی میشود.
توجه داشته باشید که کلاس شما باید از پیشوند CI استفاده کند. برای مثال، اگر فایل شما Input.php نام دارد، کلاس داخل این فایل باید به صورت زیر تعریف شود:
class CI_Input {
}
توسعه کلاس هسته
اگر تمام کاری که میخواهید انجام دهید در حد افزودن چند قابلیت - شاید افزودن یک یا دو متد - به لایبرری موجود است، پس جایگزین کردن کل لایبرری با کلاس خودتان بیش از حد افراطی است. در این صورت بهتر است کلاس را توسعه دهید. توسعه یک کلاس تقریبا مشابه جایگذاری یک کلاس است، البته با دو استثنا:
- کلاس شما باید از کلاس والد مشتق شود.
- نام کلاس جدید شما و نام فایل آن باید دارای پیشوند
MY_
باشند (این مورد قابل تنظیم و تغییر است. ادامه را مطالعه کنید.).
برای مثال، برای توسعه کلاس نیتیو Input، یک فایل در دایرکتوری بسازید و در آن کلاس را به صورت زیر تعریف کنید:
class MY_Input extends CI_Input {
}
توجه
اگر نیاز به استفاده از متد construct
در کلاس خود دارید، حتما متد construct
کلاس والد را در این متد فراخوانی کنید.
class MY_Input extends CI_Input {
public function __construct()
{
parent::__construct();
// Your own constructor code
}
}
نکته: هر فانکشنی در کلاس شما که همنام با متدی از کلاس والدش باشد، به جای متد والد استفاده میشود (این قابلیت "بازنویسی متد" نام دارد - اصول شیگرایی در php را مطالعه کنید).
اگر کلاس Controller که یکی از کلاسهای هسته کدایگنایتر است را توسعه دهید، حتما کلاسهای کنترلر اپلیکیشن خود را از کلاس جدید خودتان مشتق کنید.
class Welcome extends MY_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
تنظیم پیشوند لایبرریهای شما
برای تنظیم پیشوند کلاس فرعی خود، فایل application/config/config.php را باز کنید و به دنبال خط زیر بگردید:
$config['subclass_prefix'] = 'MY_';
لطفا دقت کنید که پیشوند تمامی لایبرریهای نیتیو کدایگنایتر CI_ تعیین شده است، بنابراین نباید از آن به عنوان پیشوند استفاده کنید.
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه