コマンドを作成する方法 Piwikのプラットフォームの紹介
それではブログシリーズの新しい記事、Piwik プラットフォームの機能を紹介します(以前の記事は Piwik マーケットプレースであなたのプラグインやテーマを公開する方法)。今回は新しいコマンドを作成する方法を学びます。このチュートリアルは、PHP の基本的な知識を持っている必要があります。
コマンドとは
コマンドは、コマンドラインに任意のタスクを実行できます。Piwik は Piwik コンソール経由で 現在 50 個のコマンドについて提供しています。これらのコマンドでは、アーカイバを開始、利用可能なカスタム変数の数を変更、開発者モードでは、キャッシュの消去、テストの実行を有効にすることができます。例えばユーザーまたは別のシステムで web サイトを同期するコマンドを書くことができます。
はじめに
このシリーズでは、すでに開発環境を設定していることを前提としています。まだの場合は、Piwik の開発者サイトにアクセスし、セットアップチュートリアルを探してください。
セットアップの為に行うこと:
- Piwik をインストールします(例えば git を経由して)
- 開発者モードを起動します。:
./console development:enable --full
。 - プラグインを生成します:
./console generate:plugin --name="MyControllerPlugin"
APIとコントローラを生成するか聞かれたらnを押して下さい。フォルダーのplugins/plugins/MyCommandPlugin
にしてください。 - 作成されたプラグインを有効にします。設定 => Plugins。
コマンドを作成してみましょう
まず Piwik コンソールを使って新しいコマンドを作成します。そこにあるコマンドが示すように、簡単に新しいコマンドを作成することができます:
./console generate:command
コマンドは、作成したコマンドが所属すべきプラグインの名前を入力するように要求されます。今回は上記で選択したプラグインの名前”MyCommandPlugin”を使用します。コマンド名をたずねられます。この例では”SyncUsers”を使用します。すでに簡単に始めるために例を含むファイル plugins/MyCommandPlugin/Commands/Syncusers.php
があるはずです。
class Syncusers extends ConsoleCommand { protected function configure() { $this->setName('mycommandplugin:syncusers'); $this->setDescription('MyCommandPlugin'); $this->addOption('name', null, InputOption::VALUE_REQUIRED, 'Your name:'); } /** * Execute command like: ./console mycommandplugin:syncusers --name="The Piwik Team" */ protected function execute(InputInterface $input, OutputInterface $output) { $name = $input->getOption('name'); $message = sprintf('Syncusers: %s', $name); $output->writeln($message); } }
プラグインの「Commands」フォルダに配置されているすべてのコマンドは自動的にコマンドラインで利用できるようになります。そのため、新しく作成されたコマンドは ./console mycommandplugin:syncusers--name="The Piwik Team"
を介して実行することができます。”。
コードテンプレートについて
protected function configure() { $this->setName('mycommandplugin:checkdatabase'); $this->setDescription('MyCommandPlugin'); $this->addOption('name', null, InputOption::VALUE_REQUIRED, 'Your name:'); }
その名が示すように、configure
メソッドは、コマンドを構成できます。コマンドと同様にすべてのオプションと引数がそれを実行するときに期待どおりの説明と名前を定義できます。
protected function execute(InputInterface $input, OutputInterface $output) { $name = $input->getOption('name'); $message = sprintf('Syncusers: %s', $name); $output->writeln($message); }
実際のタスクは、execute
メソッドで定義されます。
There you can access any option or argument that was defined on the command line via $input and write anything to the console via $output argument.
任意のオプションまたは引数は $input
を介してアクセスでき、 $output
引数経由でコンソールに何かを書くことができます。
実行中に何か例外が起きた場合、何が起きたのかを確認するためにエラーメッセージを表示する必要があります。エラーが発生したときに説明を表示すれば、コマンドが異なるステータスコードで終了したことが確認でき、何も表示しないよりも助けになるでしょう。
高度な機能
The Piwik Console is based on the powerful Symfony Console component.
Piwik コンソールは強力な Symfony コンソール コンポーネントに基づいています。例えば、あなたは任意のインタラクティブなユーザーに入力を求めることができ、別のカラースキームアウトプットなど多くを使用することができますより。多くの機能に興味があればsymfonyのコンソールのWebサイトを見てください。
コマンドをテストする方法
コマンドを作成したあと、どのようにそれをテストするべきかについて、きっと疑問に思っているでしょう。理想的には、コントローラーのように動作しますが、実際のコマンドはとても短いのです。必要に応じて、入力値を受け取る別のクラスのメソッドを呼び出し、タスクの実行や有用な情報を出力します。これで、コマンドの後ろにクラスのユニットまたは統合テストを簡単に作成することができます。将来のブログの記事のいずれかでこのトピックをカバーします。
1 つのヒント: 別のコマンド ./console generate:test
を使用してテストを作成します。コマンドをテストする方法を詳しく知りたい場合はテストコマンドのドキュメントを参照してください。
マーケットプ レースであなたのプラグインを公開
GitHub のリポジトリにプラグインをプッシュしてタグの作成することで、他の Piwik のユーザーとページを共有できます。とても簡単です。プラグインを配布する方法については、こちらをご覧ください。
コマンドを作成する容易ではないですか?私たちもファイルを作成したことはありません!APIまたはDeveloper Zoneにおける手引きに関してのフィードバックはお気軽に” target=”_blank”>お寄せ下さい。
Thomas Steur