Запуск командной строки (CLI)

    Также вызов контроллеров приложения через URL в браузере можно осуществлять используя интерфейс командной строки (command-line interface - CLI).

    Что такое CLI?

    Интерфейс командной строки - это текстовый способ взаимодействия с компьютерами. Дополнительные сведения смотрите в статье Википедии.

    Зачем запускать через командную строку?

    Есть много причин для запуска CodeIgniter через командную строку, но они не всегда очевидны.

    • Запуск заданий cron без необходимости использовать wget или curl
    • Сделать задания cron недоступными для загрузки в URL проверяя возвращаемое значение is_cli().
    • Создавать интерактивные “задачи” которые могут делать такие вещи как установка разрешений, подрезать папки кеша, выполнять резервное копирование и др.
    • Интэгрировать с другими приложениями на других языках. Напрмер, случайный C++ скрипт мог бы вызвать команду и выполнить код в вашей модели!

    Давайте попробуем: Hello World!

    Давайте создадим простой контроллер, чтобы вы могли увидеть это в действии. В текстовом редакторе, создайте файл 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
    

    Вместо этого, откройте терминал в Mac/Linux или выберите пункт Выполнить > “cmd” в Windows и перейдите к проекту на CodeIgniter.

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

    Если вск выполнено правильно, вы увидите Hello World!.

    $ php index.php tools message "John Smith"
    

    Тут мы передаем аргумент также как и параметр в URL. “John Smith” передается как аргумент и выводит:

    Hello John Smith!
    

    Вот и все!

    В двух словах, это все что нужно знать о контроллерах в командной строке. Помните, что это просто обычный контроллер, и маршрутизация _remap() работает отлично.