Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/Developing/Console/CreatingShellsTasks ...
Это старая версия Manual/Developing/Console/CreatingShellsTasks за 2009-03-21 19:11:33..

Создание оболочек и задач

Создание собственных оболочек


Давайте создадим оболочку для использования в консоли. Для этого примера, мы создадим оболочку-"отчет", которая выведет некоторые данные модели. Во-первых, создадим report.php в /vendors/shells/.


<?php 
class ReportShell extends Shell {
    function 
main() {}
}
?>


Теперь мы можем запустить эту оболочку, но она ничего не будет делать. Давайте добавим несколько моделей в оболочку, чтобы мы могли созадить некий отчет. Это делается, так же как и в контроллере: добавлением имен моделей в переменную $uses.


<?php
class ReportShell extends Shell {
    var 
$uses = array('Order');

    function 
main() {
    }
}
?>


После добавления нашей модели в массив $uses мы можем использовать её в методе main(). В этом примере наша модель Order будет доступна через $this->Order в методе main() нашей новой оболочки.


Здесь простой пример кода, который мы можем использовать в оболочке:


class ReportShell extends Shell {
    var $uses = array('Order');
    function main() {
        //Получить заказы, отгруженные в последнем месяце
        $month_ago = date('Y-m-d H:i:s',    strtotime('-1 month'));
        $orders =    $this->Order->findAll("Order.shipped >= '$month_ago'");

        //Вывести информацию о каждом заказе
        foreach($orders as $order) {
            $this->out('Order date:    ' .    $order['created'] . "\n");
            $this->out('Amount: $' .    number_format($order['amount'], 2) . "\n");
            $this->out('----------------------------------------' .    "\n");
     
            $total += $order['amount'];
        }

        //Вывести итоги для выбранных заказов
        $this->out("Total: $" .    number_format($total, 2) . "\n"); 
    }
}


Если команда cake определена в PATH, то вы можете запустить этот отчет на выполнение таким образом:


$ cake report


где report – имя файла оболочки в /vendor/shells/ без расширения .php. На выходе получится нечто подобное:


Hello user,
   Welcome to    CakePHP v1.2 Console
   ---------------------------------------------------------------
   App : app
   Path:    /path/to/cake/app
   ---------------------------------------------------------------
   Order date:    2007-07-30 10:31:12
   Amount:    $42.78
   ----------------------------------------
   Order date:    2007-07-30 21:16:03
   Amount:    $83.63
   ----------------------------------------
   Order date:    2007-07-29 15:52:42
   Amount:    $423.26
   ----------------------------------------
   Order date:    2007-07-29 01:42:22
   Amount:    $134.52
   ----------------------------------------
   Order date:    2007-07-29 01:40:52
   Amount:    $183.56
   ----------------------------------------
   Total:    $867.75



 
Комментарии
Добавить комментарий:

Файлов нет. [Показать файлы/форму]