PHPixie Consoleは、コンソールコマンドを作成、ルーティング、および実行できる新しいコンポーネントです。 他のフレームワークライブラリと同様に、Symfonyの同様のライブラリのより単純な代替として、PHPixie自体がなくても簡単に使用できます。 まず、この記事は既にPHPixieを使用している人を対象としており、標準フレームワークコマンドの簡単な説明が含まれていますが、最後に、PHPixieコンソールを個別に起動する方法の例も示します。
使用するコンソールを起動して、使用可能なコマンドのリストを表示します。
cd your_project_directory/ ./console
結果は次のようになります。
Available commands: app:greet Greet the user framework:installWebAssets Symlink or copy bundle web files to the projects web folder framework:generateBundle Generate a new bundle help Print command list and usage
helpコマンドは、詳細情報と使用可能なオプションのリストを表示します。
./console help framework:installWebAssets framework:installWebAssets [ --copy ] Symlink or copy bundle web files to the projects web folder Options: copy Whether to copy web directories instead of symlinking them
標準チーム- フレームワーク:installWebAssets- / web / bundlesフォルダーに、 / web / bundles / app- > / bundles / app / webなど、バンドル内の/ webフォルダーを指すショートカットを作成します。 これは、コンポーザーを使用してインストールされたバンドルがWebファイルを提供できるようにするために行われます。 --copyチェックボックスは、ショートカットを作成する代わりにファイルをコピーします。 これは、CDNのアーカイブを作成する場合などに便利です。
- framework:generateBundle-新しいバンドルを生成してプロジェクトに接続します。 既存のバンドルをコピーしてバンドルを手動で作成する必要はなくなりました。
独自のコマンドの追加プロジェクトに
greetコマンドという簡単な
アプリを追加しました。 コマンドの操作は、
\ Project \ App \ Consoleクラスを使用してHTTPプロセッサを追加するのとまったく同じです。
commandNames()メソッドによって返された配列にコマンド名を追加し、
build <command_name> Commandメソッドを追加します。
コマンドコンストラクターでは、パラメーターと引数の説明とリストを指定できます。
namespace Project\App\Console; class Greet extends \PHPixie\Console\Command\Implementation { public function __construct($config) {
引数とオプション次のコマンドを追加するとします。
sqldump --user=root --skip-missing -f myDatabase users items
ここで、
myDatabaseはデータベース
の名前であり、その後にバックアップするテーブルのリストが続きます。 これらは私たちのチームの議論です。 そして、
user 、
skip-missing 、および
fオプション。 指定する順序は引数では重要ですが、オプションでは重要ではないことに注意してください。 また、1文字の短いオプションでは、2文字ではなく1文字を使用します。
コードでは、次のようになります。
$config->option('user')
引数を説明するときは、チームに存在する順序でそれらを尋ねる必要があることを覚えておく必要があります。 私たちの場合、
テーブルの前のアイデアの
データベース引数:
$config->argument('database') ->required() ->description("Which database to dump the tables from"); $config->argument('tables') ->description("Tables to dump")
ヘルプを実行
すると、次の結果が得られます。
./console help app:sqldump app:sqldump --user=VALUE [ -f ] [ --skip-missing ] DATABASE [ TABLES... ] Options: user User to connect to the database with f Force database dump skip-missing Dont throw an error if the tables are missing Arguments: DATABASE Which database to dump the tables from TABLES Tables to dump
コマンドが起動されると、
run()メソッドにオプションと引数が渡され、そこからHTTPプロセッサーと同じ方法でそれらを取得できます。
public function run($argumentData, $optionData) { $database = $argumentData->get('database');
入出力コンソールに出力する最も簡単な方法は、単にテキストを返すことです。 ただし、プロセスが長時間機能する必要があり、中間結果を出力する必要がある場合は、追加の方法を使用できます。
public function run($argumentData, $optionData) {
さらに、CLIコンテキストにアクセスして、すでに操作することができます。
public function run($argumentData, $optionData) { $context = $this->cliContext(); $inputStream = $cliContext->inputStream(); $outputStream = $cliContext->outputStream(); $errorStream = $cliContext->errorStream(); $outputStream->write("Hello"); $errorStream->writeLine("Something bad happened"); $context->setExitCode(1);
ステータスコードは、外部からのコマンド(Bashなど)が正常に実行されたかどうかを確認するときに役立ちます。
if ./console app:somecommand ; then echo "Command succeeded" else echo "Command failed" fi
最初から書いたように、コンポーネントはフレームワークなしで簡単に使用できます。
class YourCommandRegistry extends \PHPixie\Console\Registry\Provider\Implementation { public function commandNames() { return ['greet']; } public function buildGreetCommand($config) { return new Greet($config); } } $slice = new \PHPixie\Slice(); $cli = new \PHPixie\CLI(); $registry = new YourCommandRegistry(); $console = new \PHPixie\Console($slice, $cli, $registry); $console->runCommand();
したがって、コンソール機能を任意のプロジェクトに追加できます。すべての依存関係は最小限で、非常に直感的です。