Logo for Parsclick
توجه: سایت برای مدت چند روز از تاریخ ۱۸ نوامبر از کار خواهد افتاد...

معرفی فریمورک کدایگنایتر - قسمت دوم

  سید مسعود امامیان سید مسعود امامیان
  April 21, 2017 at 2:25 PM
  ۱ اردیبهشت، ۱۳۹۶ ساعت ۱۴:۲۵

معرفی فریمورک کدایگنایتر - قسمت دوم

در حال حاضر که دارم این مقاله رو می نویسم آخرین نسخه، نسخه ی 3.1.4 هست.

خوبه تغییراتی که در این نسخه بوده رو اول یه نگاه بندازیم.

در این نسخه یک سری به قول James Parry باگ برطرف شده:


  • در سطح امنیتی: مشکل تزریق هدر ( header injection ) و رمزگذاری کدها برطرف شده.
  • بهبود نشست ها، لودر(Loader)، دیتابیس و توابع مفید و رایج بوده.
  • پیشرفت در قسمت بارگذاری تصاویر داشتن.

در مقاله قبلی یک توضیح کلی از ساختار اصلی فریم ورک کدایگنایتر دادیم. در این مقاله می خواهیم کمی به توضیح پوشه ی Configبپردازیم.

این پوشه در داخل پوشه Application قرار گرفته. پوشه Application، بخش اصلی کار شما در مراحل توسعه اپلیکیشن هست. پس همه چیز رو می تونید در این بخش پیدا کنید.

خب بریم ببینیم چی داخل Config هست (هر کدام از این موارد به صورت جداگانه توضیح مفصل داده خواهند شد):

Autoload

اگر قرار هست در ابتدای کار هرچیزی رو روی اپلیکیشن وب بالا بیارید که در آینده نیازی به لود کردن اون نباشید باید به سراغ این فایل بیاید. برای مثال: دیتابیس چیزی نیست که هربار بخواهید لود کنید. پس به صورت پیش فرض باید در این قسمت لود کنید. (البته نمی دونم چرا به صورت پیش فرض خودشون در این قسمت نیاوردن! )

مثال از لود دیتابیس در این قسمت:


$autoload['libraries'] = array('database');

Config

در این قسمت تنظیمات اصلی اپلیکیشن قرار میگیره. برای مثال، اگر سایتی شما داشته باشید به اسم example.com، در این قسمت شما باید آدرس سایت خودتون رو وارد کنید:


$config['base_url'] = 'example.com';

Constants

در این قسمت شما اگر بخواهید متغییرهایی را تعریف کنید که در کل اپلیکیشن ثابت هستند، می توانید در این فایل قرار بدید.

Database

تنظیمات مربوط به دیتابیس و اتصال اون رو می توانید در این قسمت انجام بدید.

Doctypes

انواع داک تایپ ها(Document type declaration) در این قسمت به صورت یک آرایه تعریف شده و می توانید به این ارایه دسترسی داشته باشید.

foreign_chars

در واقع در این فایل، یک آرایه وجود داره که می توانید کاراکترهای مختلف رو به حالتی که دوست دارید ترجمه (تغییر) بدید. مثلا: '/ĵ/' => 'j',

Hooks

شاید شما هم دوست داشته باشید کارهای مختلف رو روی سر اپلیکیشن کدایگنایترتون بیارید. مثلاً می خواهید قبل از اینکه اپلیکیشن کدایگنایترتون لود بشه، یک اسکریپتی رو لود کنید یا... باید بیاید سراغ این فایل. حالا من در ادامه مثال واقعی میزنم.

Memcached

"مم کشد" در واقع یک سیستم مدیریت کش هاست. فرض کنید در برنامه تحت وب، یکی از پرس‌وجوهایی که به پایگاه‌داده ارسال می‌شود منابع و زمان زیادی برای اجرا می‌خواهد. از سویی دیگر، نتیجه‌ی این پرس‌وجو در اکثر زمان‌ها ثابت است و ممکن است حداکثر ۵ دقیقه یکبار تغییر کند، و همچنین از نظر برنامه‌نویس اشکالی ندارد که کاربر نتایج جدید را با پنج دقیقه تاخیر مشاهده کنند. در این صورت می‌توانیم نتیجه این پرس‌وجو را ابتدا از ممکشد درخواست کنیم، و اگر نتیجه در ممکشد یافت نشد، پرس‌وجوی واقعی را از پایگاه‌داده انجام دهیم و نتیجه را با اعتبار ۵ دقیقه در ممکشد ذخیره کنیم. در این صورت در هر بازه ۵ دقیقه‌ای، تنها یک درخواست به پایگاه‌داده ارسال خواهد شد، و بقیه درخواست‌ها از ممکشد و با سرعت بالا پاسخ داده خواهند شد.

Migration

در واقع با میگریشن ها می تونید روی دیتابیس تون مدیریت کاملی داشته باشید. خوبی میگریشن ها این هست که می تونید تغییراتی که در طول مدت روی دیتابیس می دهید رو مدیریت کنید. یعنی یه تیبلی که ۱ ستون (!) داشته کی و چگونه به ۲۰ ستون تبدیل شده.

Mimes

MIME Type ها یک راه استاندارد را پیش روی سرورها و همچنین مرورگرهای اینترنتی قرار می دهندتا از آن طریق بتوانند انواع و اقسام فایل ها را در اینترنت دسته بندی کنند. در این فایل انواع اون ها تعریف شدن.

Profiler

شاید شما هم از اون دسته آدم هایی باشید که بهینه بودن کدها و کوئری ها و... اهمیت میدین. با فعال کردن profilerشما می توانید متوجه بشید که چقدر از کوئری های شما دارن زمان و هزینه میبرن تا اجرا بشن. خروجی این قابلیت، یک گزارش کلی از روند انجام وظایف هست که برنامه نویس رو در جریان کندی اون بخش میزاره.

Routes

برای مسیریابی URLها استفاده میشه. برای مثال فرش کنید همچین کلاس و تابعی دارید:

example.com/class/function/id/

خب این URL زیاد قشتنگ نیست. بهتره خلاصه اش کنیم به اون صورتی که قشنگه. یعنی حداقل اسم کلاس و تابع رو پنهان کنیم: example.com/product/1/

این خیلی زیباتر و خواتاتر هست نسبت به حالت اولی (مقصد دومی همون اولی هست).

حالا چگونه این کار رو انجام بدیم؟ خب برای این کار باید به سراغ همین فایل بیایم و تعریفش کنیم. بعداً درباره routesبیشتر توضیح میدم.

Smileys

انواع شکلک های مختلف داخل این فایل تعریف شده. میتونید در قسمت های مختلف اپلیکیشن استفاده کنید.

(نظر شخصی: نمیدونم چرا این فایل داخل کدایگنایتر تعریف شده چون انقدر هم لازم نیست که بیان واسش وقت بزارن : )) )

user_agents

خلاصه اگه بخوام بگم user agent چیه باید بگم که، منظور این کاربری که داره از سیستم استفاده میکنه کیه؟ مرورگرش چیه؟ سیستم عاملش چیه؟ و...

داخل این فایل ۴ آرایه از agentها قرار گرفته تا اپلیکیشن بتونه agentها رو تشخیص بده:


  • Platform
  • Browsers
  • Mobiles
  • Robots