اجرای کدایگنایتر به وسیله خط فرمان

مجتبی پاکزاد کدایگنایتر 3.1.9 در حال تکمیل رایگان

کنترلرهای یک اپلیکیشن علاوه بر اینکه توسط URL در مرورگر قابل فراخوانی هستند، توسط رابط خط فرمان (CLI) نیز قابل لود شدن هستند.

CLI چیست؟

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

چرا کدایگنایتر را با خط فرمان اجرا کنیم؟

دلایل زیادی برای اجرای کدایگنایتر از طریق خط فرمان وجود دارد، اما این دلایل همیشه بدیهی نیستند.

  • دستورات کرون‌جاب را بدون نیاز به استفاده از wget یا curl اجرا کنید.
  • با چک کردن مقدار بازگشتی is_cli()، دستورات کرون‌جاب را از دسترسی با لود مستقیم توسط URL خارج کنید.
  • تسک‌های تعاملی بسازید تا بتوانند کارهایی مانند پرمیشن‌ها، حذف محتویات فولدر کش، بک‌آپ‌گیری و غیره انجام دهند.
  • اپلیکیشن خود را با سایر اپلیکیشن‌های سایر زبان‌ها ادغام شوند. برای مثال، یک اسکریپت C++ باید یک کامند را فراخوانی کرده و کدی را در مدل‌های شما فراخوانی کند.

بیابید با مثال معرف Hello World امتحان کنیم

یک کنترلر ساده بسازید، تا بتوانید این مثال را در عمل ببینید. با استفاده از IDE یا تکست ادیتور خود، یک فایل با نام Tools.php بسازید و کد زیر را در آن قرار دهید:

<?php
class Tools extends CI_Controller {

        public function message($to = 'World')
        {
                echo "Hello {$to}!".PHP_EOL;
        }
}

حالا فایل را در دایرکتوری application/controllers/ ذخیره کنید.

روش معمول برای دسترسی به این متد، استفاده از URLیی شبیه به زیر است:

example.com/index.php/tools/message/to

اما، هدف ما استفاده از خط فرمان است. اگر از مک یا یکی از توزیع‌های لینوکس استفاده می‌کنید، ترمینال را باز کنید و اگر کاربر ویندوز هستید با کلید Win + R محیط Run را فراخوانی کنید و دستور cmd را اجرا کنید تا کامندلاین باز شود و به مسیر پروژه اشاره کنید:

$ cd /path/to/project;
$ php index.php tools message

اگر این کار را به درستی انجام داده باشد، دستور Hello World! در محیط ترمینال/کامندلاین نمایش داده می‌شود.

$ php index.php tools message "Mojtaba Pakzad"

در صورتی که مانند مثال بالا یک آرگومنت به متد پاس دهید مانند پارامترهای URL کار می‌کند. "Mojtaba Pakzad" به عنوان آرگومنت به متد پاس داده شده و متد خروجی زیر را بازگردانده است:

Hello Mojtaba Pakzad!

به همین راحتی!

به طور خلاصه، این همه چیزی بود که باید در مورد کنترلرها در خط فرمان بدانید. به یاد داشته باشید که این کنترلرها، عینا مانند کنترلرهای معمولی هستند، بنابراین مسیریابی و فانکشن _remap () به خوبی قابل پیاده‌سازی هستند و به همان درستی کار می‌کند.