WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [symfony] コマンドラインから実行できるPHPを生成。タスクを使う。

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

cronで実行するPHPなど、コマンドラインから実行するPHPを作るのって、sessionやincludeパスの設定など以外に面倒ですよね。
symfonyには、そういうPHPを簡単に生成する機能があります。
taskと呼ばれているもので、propel-build-allなど、コマンドラインでsymfony ~と入力するのも、taskの一つです。symfonyコマンドで一覧を確認できます。


$symfony

taskを生成するコマンド(これもtaskですね)はsymfony generate:taskです。
まずhelpを見てみましょう。

$symfony help generate:task
Usage:
symfony generate:task [--dir[="..."]] [--use-database|-db[="..."]] [--brief-description|-bd[="..."]] task_name

Arguments:
task_name The task name (can contain namespace)

Options:
--dir The directory to create the task in (default: lib/task)
--use-database (-db) Whether the task needs model initialization to access database (default: true)
--brief-description (-bd) A brief task description (appears in task list) (default: )

まあ、見ればわかりますが、簡単に説明すると、
Arguments:
task_name 実行するときに指定するタスクの名前。namespace:task_nameと名前空間を指定できる。

Options:
--dir taskの生成先。pluginにするなら--dir=plugins/myPlugin/lib/taskとか指定するといいみたいです。
--use-database データベースを使うか?デフォルトがtrueなので使わないならfalseにしましょう。
--brief-description タスク一覧を出したときに出る簡単な説明。後で編集できます。

$symfony generate:task --use-database="false" gomo:build-package-xml

これで、lib/taskにファイルが出来上がるのでこれを編集します。
上の方、protected function configure()メソッドの中で色々設定できます。

protected function configure()
{
$this->namespace = 'gomo';
$this->name = 'build-package-xml';
$this->briefDescription = 'hogehogheo';
$this->detailedDescription = <<The [gomo:build-package-xml|INFO] task make package.xml for PAER.
Call it with:

[php symfony gomo:build-package-xml|INFO]
EOF;
// add arguments here, like the following:
$this->addArgument('name', sfCommandArgument::REQUIRED, 'package name');
// add options here, like the following:
$this->addOption('dir', 'd', sfCommandOption::PARAMETER_REQUIRED, 'package directory', sfConfig::get('sf_plugins_dir'));
}

$this->addArgument()はコマンドの引数
$this->addOption()はオプションを追加
上の例だと実行は

$symfony gomo:build-package-xml --dir="/path/to/package" package_name

自分で作ったtaskも先ほどのリストに出てきて、また、普通にhelpも表示できます。

$symfony
$symfony help gomo:build-package-xml

削除するときはlib/taskの中のtaskフォルダを削除すれば一覧から消えるみたいです。

sfで始まるコアクラスはオートロードが出来ましたが、libやpluginの独自クラスはrequireを書かないとだめみたいです。sfConfig::getで以下のディレクトリが取得できるのでrequire_onceするみたいです。

[sf_symfony_lib_dir] => /home/~
[sf_root_dir] => /home/~
[sf_apps_dir] => /home/~
[sf_lib_dir] => /home/~
[sf_log_dir] => /home/~
[sf_data_dir] => /home/~
[sf_config_dir] => /home/~
[sf_test_dir] => /home/~
[sf_doc_dir] => /home/~
[sf_plugins_dir] => /home/~
[sf_web_dir] => /home/~
[sf_upload_dir] => /home/~
[sf_cache_dir] => /home/~
[sf_logging_enabled] =>


[symfony 1.1.5]
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。