با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که دوره آموزش codeigniter را دنبال می کنند. در جلسه قبل با فریم ورک MVC آشنا شدیم. در این جلسه قرار است به مفاهیم پایه در codeigniter بپردازیم. مفاهیم پایه در codeigniter شامل مفاهیم گسترده ای می شود که از جمله آن می توان به کنترل کننده ها در CodeIgniter ،نمایه ها یا view ها در codeigniter ، روش های سازنده در codeigniter ، مدل ها، مسیریاب ها و کمک کننده ها در codeigniter اشاره کرد که همگی جزء مفاهیم پایه در codeigniter هستند اما در این میان کنترل کننده ها، بیشتر از سایر مفاهیم پایه در codeigniter اهمیت دارند و به کار گرفته می شوند.
در ادامه مفاهیم پایه را با کنترل کننده ها در codeigniter شروع می کنیم.
در ادامه این مبحث قرار است که به معرفی انواع مفاهیم پایه در codeigniter بپردازیم و مهمترین آنها کنترل کننده ها در codeigniter را مورد بررسی قرار دهیم.
از جمله مفاهیم پایه کنترل کننده ها در codeigniter می باشند. یک کنترل کننده در codeigniter یک فایل کلاس ساده است و همان طور که از نام آن پیداست به وسیله URL تمام برنامه را کنترل می کند.
ابتدا به پوشه application / controllers بروید. در آن جا دو فایل را خواهید یافت:
index.html
Welcome.php
این دو فایل همراه با codeigniter هستند.
این دو فایل را همان طور که هستند نگه دارید و در عوض یک فایل جدید با نام “Test.php”بسازید. کد زیر را در فایل مورد نظر بنویسید:
1 2 3 4 5 6 7 8 | <?php class Test extends CI_Controller { public function index() { echo "Hello World!"; } } ?> |
کلاس تست ساخته شده، یک کلاس ساخته شده به نام CI_Controller را گسترش می دهد. هر زمان که بخواهید کلاس کنترل خود را ایجاد کنید این کلاس قابلیت گسترش دارد.
به این ترتیب شما اقدام به ساخت کنترل کننده ها در codeigniter نموده اید که از جمله مفاهیم پایه در codeigniter محسوب می شوند.
کنترل کننده فوق را می توان از طریق URI به صورت زیر نام گذاری کرد:
1 | http://www.your-domain.com/index.php/test |
کلمه “test” را در URI بالا بعد از index.php بگذارید. این نشان دهنده نام کلاس کنترل کننده است. همان طور که نام کنترل کننده تست را “Test” انتخاب می کنیم؛ این کلمه “Test” را بعد از index.php نیز می نویسیم. نام کلاس باید با حروف بزرگ نوشته شود اما هنگامی که کنترل کننده ها را با URI نام گذاری می کنید باید از حروف کوچک نیز استفاده کنید.
ساختار عمومی برای نام گذاری کنترل کننده به صورت زیر است:
1 | http://www.your-domain.com/index.php/controller/method-name |
بیایید کلاس زیر را ویرایش کنیم و روش نام گذاری دیگری به نام “hello” ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php class Test extends CI_Controller { public function index() { echo "This is default function."; } public function hello() { echo "This is hello function."; } } ?> |
کنترل کننده بالا را می توان به سه روش زیر اجرا کنید:
پس از بازدید از اولین URI در مرورگر، خروجی را به صورت زیر خواهید دید.
همان طور که می بینید؛ خروجی را به روش “index” به دست آورده ایم و فقط از نام کنترل کننده در URI استفاده کرده ایم. در چنین شرایطی codeigniter این روش پیش فرض را “index” نام گذاری می کند.
بعد از بازدید از URI دوم در مرورگر، خروجی به دست آمده نیز شبیه به تصویر بالا خواهد بود. نام این روش استفاده شده را بعد از نام کنترل کننده در URI خواهیم گذاشت. همان طور که نام روش مزبور “index” است ما نیز خروجی مشابهی را دریافت می کنیم.
بعد از بازدید از URI سوم در مرورگر، خروجی به دست آمده را مطابق تصویر زیر خواهید دید. همان طور که می بینید، ما خروجی روش “hello” به دست آورده ایم زیرا ما نام “hello” را به عنوان نام روش خود، بعد از نام کنترل کننده یعنی “test” قرار داده ایم.
یکی دیگر از موارد مهمی که جزء مفاهیم پایه در codeigniter محسوب می شوند Views ها هستند که می توانند یک صفحه وب ساده و یا پیچیده در codeigniter باشند و از طریق کنترل کننده ها نام گذاری شوند.
این صفحه وب می تواند شامل هدر، فوتتر، سایدبار و غیره باشد. view را نمی توان مستقیماً نامگذاری کرد.
بیایید یک view ساده را ایجاد کنیم.
یک فایل جدید با عنوان application/views با نام “test.php” ایجاد کنید.
کد زیر را در این فایل کپی کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter View Example</title> </head> <body> CodeIgniter View Example </body> </html> |
کد فایل های application/controllers/test.php را همان طور که زیر نشان داده شده است، تغییر دهید:
view می تواند از طریق ساختار زیر بارگذاری شود:
1 | $this->load->view('name'); |
اگر قصد ذخیره فایل view را در پوشه ی خاصی دارید؛ می توانید از ساختار زیر استفاده کنید:
1 | $this->load->view('directory-name/name'); |
لازم نیست که پیشوند آن را حتماً با PHP مشخص کنید مگر این که چیزی غیر از PHP استفاده شود.
روش index () روش view را نامگذاری می کند و از آن جا که کدگذاری html را در فایل test.php زیر application / views / test.php ذخیره می کنیم؛ روش test را به عنوان argument برای نمایش () استفاده می نماییم.
1 2 3 4 5 6 7 8 | <?php class Test extends CI_Controller { public function index() { $this->load->view('test'); } } ?> |
خروجی کد بالا به شکل زیر خواهد بود:
مدل ها یا Models از جمله دیگر مفاهیم پایه در codeigniter هستند.
کلاس های مدل یا (Model classes) برای کار با اطلاعات در دیتابیس طراحی شده اند. برای مثال اگر از codeigniter برای مدیریت کاربران خود در برنامه استفاده می کنید، بنابرین باید از model class در وارد نمودن وظایف، حذف، به روز رسانی و غیره دیتاهای کاربران استفاده نمایید.
Model Classes ها در دایرکتوری application/models ذخیره می شوند.
کد زیر نشان می دهد که چطور یک model class را بسازید:
1 2 3 4 5 6 7 8 | <?php Class Model_name extends CI_Model { Public function __construct() { parent::__construct(); } } ?> |
نام Model_name نام کلاس مدل است که می خواهید آن را به کار ببرید. هر کلاس مدل باید Class CI_Model CodeIgniter را به کار برده باشد. حرف اول کلاس مدل، باید حرف بزرگ باشد.
در زیر کد مخصوص model class کاربران را می بینید:
1 2 3 4 5 6 7 8 9 | <?php Class User_model extends CI_Model { Public function __construct() { parent::__construct(); } } ?> |
model class بالا باید به صورت User_model.php ذخیره شود. نلم class و نام فایل، هر دو باید ذخیره شوند.
Model می تواند در کنترل کننده نام گذاری شود. از کد زیر می توان برای بارگذاری هر مدلی استفاده کرد:
1 | $this->load->model('model_name'); |
پس از بارگیری مدل، می توانید به سادگی آن را به صورت مثال زیر نشان دهید:
1 | $this->model_name->method(); |
ممکن است شرایطی ایجاد شود که بخواهید model classes ها را در طول برنامه خود داشته باشید. در چنین شرایطی بهتر است آن را به صورت خودکار بارگذاری کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /* | --------------------------------------------------------------- | Auto-Load Models | --------------------------------------------------------------- | Prototype: | | $autoload['model'] = array('first_model', 'second_model'); | | You can also supply an alternative model name to be assigned | in the controller: | | $autoload['model'] = array('first_model' => 'first'); */ $autoload['model'] = array(); |
همانطور که در شکل بالا نشان داده شده است، نام model را در بخشی که می خواهید به صورت خودکار بارگذاری کنید، بفرستید و در حالی که سیستم در حالت نصب قرار دارد و در سراسر برنامه قابل دسترسی است آن را به صورت اتوماتیک بارگذاری کنید.
همان طور که از نام این بخش پیداست؛ این بخش به شما کمک خواهد کرد که سیستم خود را بسازید. این بخش به وظیفه کوچکتر تقسیم می شود. در جدول زیر به تعدادی از این کمک کنندگان ذر codeigniter اشاره شده است. البته ما می توانیم که کمک کننده ها یا (Helper) های خود را بسازیم.
کمک کننده ها یا Helper ها معمولا در system/helpers یا application/helpers directory ذخیره می شوند.
کمک های سفارشی یا Custom helpers در دایرکتوری application/helpers و کمک کننده های سیستم یا systems’ helpers در system/helpers ذخیره می شوند.
CodeIgniter اول application/helpers directory را بررسی می کند. اگر دایرکتوری در آن جا موجود نباشد، یا کمک کننده های در آن جا قرار داده نشده باشند؛ به جای آن ها CodeIgniter، به بررسی system/helpers/ directory شما می پردازد. به یاد داشته باشید که هر کمک کننده ای خواه custom Helper باشد، خواه System Helper، باید قبل از استفاده بارگذاری شده باشد.
یک Helper یا کمک کننده را می توان به صورت زیر بارگذاری کرد:
1 | $this->load->helper('name'); |
از روش زیر می توانید برای بارگذاری URL Helper استفاده کنید:
1 | $this->load->helper('url'); |
CodeIgniter از یک سیستم یوزر فرندلی برای مسیر یابی استفاده می کند. به همین دلیل می توان مجدداً آدرس URL را راه اندازی کرد.
به طور معمول یک رابطه یک به یک میان یک رشته URL و کنترل کننده متناظر آن در class/method وجود دارد.
بخش های مختلف در URI به طور معمول از الگوی زیر پیروی می کنند:
1 | your-domain.com/class/method/id/ |
در برخی موارد ممکن است بخواهید این مکانیزم مسیر یابی پیش فرض را تغییر دهید. codeigniter امکاناتی را فراهم می آورد که از طریق آن می توانید قوانین مسیر یابی خود را تنظیم کنید.
در codeigniter یک فایل خاص وجود دارد که می توانید تمام موارد را به کمک آن مدیریت کنید. این فایل در برنامه / config / routes.php واقع شده است.
بخشی را با نام $route پیدا خواهید کرد که در آن می توانید قوانین مسیر یابی خود را سفارشی کنید. کلید اساسی در بخش $route تصمیم گیری در مورد این است که چه چیزی مسیر یابی شود و چه مقداری برای مسیر یابی انتخاب گردد.
در codeigniter سه مسیر رزرو شده وجود دارد.
اگر URI شامل هیچ دیتایی نباشد؛ این مسیر نشان می دهد که کدام یک از کنترل کننده ها باید بارگذاری شوند. این مشکل زمانی رخ خواهد داد که افراد URL ریشه شما را بارگذاری کنند. پیشنهاد می شود که یک مسیر یاب پیش فرض داشته باشید در غیر این صورت صفحه ۴۰۴ به صورت پیش فرض ظاهر خواهد شد.
این مسیر نشان می دهد که چه نوع کنترل کننده باید بارگذاری شود اگر کنترل کننده درخواست شده پیدا نشد این صفحه خطای پیش فرض ۴۰۴ را لغو می کند.
همانطور که از مقدار (Boolean value) مشخص است این مسیر، دقیقا یک مسیر نیست. این گزینه به شما این امکان را می دهد که به طور خودکار با استفاده از ترسیم (‘-‘) تیک های زیر را در بخش های کنترل کننده و روش URI جایگزین کنید.
مسیرها را می توان با استفاده از کلمات کلیدی و یا با استفاده از عبارات منظم سفارشی سازی کرد. در نظر داشته باشید که قوانین سفارشی سازی برای مسیر یابی باید بعد از قوانین محرمانه قرار بگیرند.
می توان از دو نوع کاراکتر به عنوان کلمات کلیدی یا wildcard در CodeIgniter استفاده نمود:
1 | $route['product/:num']='catalog/product_lookup'; |
در مثال بالا به این دلیل که کلاس “catalog” و “product_lookup” مورد استفاده قرار گرفته اند؛ کلمه “product” در بخش اول URL، و عدد در بخش دوم، توانسته اند مورد استفاده قرار بگیرند.
مانند کلمات کلیدی (wildcards)، می توان از عبارات های منظم در بخش $route array key نیز استفاده کرد.
اگر هر URI با عبارات منظم مطابقت داشته باشد؛ در این صورت به قسمت $route هدایت خواهد شد.
1 | $route['products/([a-z]+)/(\d+)']='$1/id_$2'; |
در مثال فوق یک URI، به جای کنترل کننده “shoes” و روش “id_123” به صورت products/shoes/123 نام گذاری شده است.
در این جلسه از دوره آموزشی codeigniter به صورت گسترده و جامع با مفاهیم پایه در codeigniter آشنا شدیم و انواع مفاهیم پایه در این فریم ورک را شناختیم. در جلسه بعد، قرار است که پیکربندی codeigniter را مورد بررسی قرار دهیم. همچنان با پی وی لرن همراه باشید.