FuelPHPをやってみる (18) - タスクを使う -

2012-11-23T00:00:00+00:00 FuelPHP PHP

fuel/app/tasksにタスククラスを定義しておけば、oil refineで使用する事が出来る模様

まぁドキュメントに書いてる通り進めてるだけなので

<?php

namespace Fuel\Tasks;

class Sample {
    public function run($msg = null) {
        if (is_null($msg)) {
            $msg = "hoge";
        }

        $this->say($msg);
    }

    public function say($msg) {
        Log::info($msg);
    }
}

っていう感じでFuelTasksなネームスペースなタスククラスを定義する。で実行する場合には

oil refine sample
oil refine sample:say hoge

oil refine タスク名[:メソッド]な感じで実行出来る模様。 まぁもっかい言いますけどドキュメント通りです

コントローラーからTaskを呼び出す

正規な方法があるのか知らないけど、Oil\Refineを動かしちゃえば良いんじゃね的な感じでやってみた(別途config.phpでalways_load.packagesにoilを追加する必要があります)

<?php

class Controller_Home extends Controller {
    public function get_index() {
        $this->task("sample:say", "foobar");

        Debug::dump($_SERVER);

        return Response::forge("hoge");
    }

    private function task($task, $args = array()) {
        if (!is_array($args)) {
            if (!is_null($args)) {
                $args = array($args);
            } else {
                $args = array();
            }
        }

        Fuel::$is_cli = true;

        $_SERVER["argc"] = count($args);

        Oil\Refine::run("sample", $args);
    }
}

な感じかなと、ちょっといろんな所いじってるけど元に処理後は元に戻した方が良いかと。まぁ必要性あるかどうかも微妙ですので

タスクのテストに関しては恐らくは単純なクラスなので普通にインスタンス作ってテストすれば良いのは無いかと

FuelPHPをやってみる (19) - Themeを使う - WebHDFSを使ってみる