فریم ورک ها و معماری های جدید
فریم ورک کدایگنایتر (CodeIgniter) از بسیاری جهات برای ساخت سیستم های مبتنی بر وب عملکرد خوبی از خود نشان می ده. این فریم ورک یکی از رقبای خوب کیک پی.اچ.پی (CakePHP) محسوب می شه. در حالی که CakePHP به صورت پیش فرض از ماژول ها پشتیبانی نمی کنه, CodeIgniter با قابلیت پشتیبانی از سیستم ماژولار و اپلیکیشن های مختلف, مورد توجه بسیاری از برنامه نویسان سیستم های مبتنی بر وب قرار گرفته.
CodeIgniter از مدل MVC مبتنی بر معماری مدل, ویو و کنترلر (Model, View, Controller) پشتیبانی می کنه و تمامی کارهاشو با استفاده از این مدل انجام می ده به این ترتیب که وجود هر کنترلر برای در دست گیری اپلیکیشن و ویو برای نمایش واسط های کاربری ضروری و استفاده از مدل ها برای ارتباط با پایگاه داده اختیاری است.
پس CodeIgniter از یک معماری دو لایه ی اصلی تشکیل شده که در لایه ی اول از کنترلر تشکیل می شه, در لایه ی بعدی, مشترکا مدل و ویو در دو بخش مجزا به نمایش اطلاعات و جمع آوری آن دست می زنند. در این وضعیت هسته ی سبک CodeIgniter در پایین ترین سطح, بدون نیاز به هک شدن و یا تغییر خاص برای هر گونه اپلیکیشن به کار مشغول می شود. (عدم نیاز به هک شدن از ادعاهای نویسندگان این فریم ورک هست ولی عملا برای سیستم های پیچیده نیاز به تغییر هسته محتمل به نظر می رسه با این حال با توجه به سادگی فوق العاده ی کدهای هسته, این کار راحت به نظر می رسه)
مزیت بعدی CodeIgniter عدم پشتیبانی اولیه از ارسال فرم ها با متد get هست. با این که امکان فعال سازی این متد وجود داره ولی به دلیل این که استفاده نکردن از این متد, هم شکل URL و هم امنیت بالاتر رو حفظ می کنه, فرم غیر فعال اون و استفاده از متد post و یا ارسال سگمنت (segment) ها توصیه شده. به این ترتیب در یک url ساده, می توانید application و کنترل مورد نظر و حتی پارامترهای ارسالی رو هم بدون نیاز به یک خظ کد اضافه داشته باشید!
مثال:
Normal URL:
http://yourdomain.com/index.php?app=content&task=show_content&content_id=23
CodeIgniter URL:
http://yourdomain.com/contents/show_content/23/
از مشکلات این فریم ورک عدم پشتیبانی مستقیم از Ajax (ای.جکس یا همان آژاکس ایرانی ها!) هست که با کلک های خاصی به راحتی قابل پیاده سازی است. همچنین عدم امکان ساخت ماژول های 100% مستقل به دلیل مشکلات namespace import از دیگر ضعف های این فریم ورک است.