そして、自由な時間、私自身がオープンなものを書き、github(hg + bitbucketに座って)を試し、最後に頑固なCodeIgniterとそのコミュニティに役立つ何かをしたいという欲求があったので、松葉杖を書くことにしました、このフレームワークでのcliスクリプトの記述をわずかに単純化するように設計されています。
最小限のことができます-指定された引数を探して検証し(必要な引数が指定されていない場合)、スクリプトを使用するためのヒントを表示します。必要に応じて、CodeIgniterを参照せずに簡単に終了できます。
使用する
実際、ライブラリを作成するとき、私はCodeIgniterを使用する人々にその使用法を馴染ませようとしたので、その使用法は標準のForm_Validationライブラリーの使用法にいくらか似ています。
これは例で最もよく見られます:
1.最初に、 githubからライブラリをダウンロードし、 * / application / libraries /フォルダーに配置します。
2.次に、コマンドラインで使用するコントローラーを作成します。
<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed"); class Cli extends MY_Controller { public function __construct() { parent::__construct(); if(!$this->input->is_cli_request()) { show_404(); } } }
このコントローラーがコマンドラインから起動されているかどうかがチェックされる行に注意してください。 ウェブサイトを通じて悪役がスクリプトにアクセスするのは望ましくありません!
3.次に、ライブラリを使用してメソッドを作成します。
public function hello() { // Add an argument for cli interaction $argumets = array( array('alias' => '-n', 'arg' => '--name', 'help' => 'the name, we say hello to', 'type' => 1) ); // Initialize library with arguments array $this->load->library("command_line", $argumets); // Validate input if (!$this->command_line->valid_input()) { // If not valid, print some help print $this->command_line->get_help(); } else { // Else do your code print("Hello " . $this->command_line->get_argument('-n') . "!" . PHP_EOL); } }
このコードをさらに詳しく分析してみましょう。
最初に、スクリプトに使用可能なパラメーターを含む配列を作成しました。- argは引数のメイン名です(例--name )。
エイリアスが指定されていない場合は必須 - alias-エレメントの省略名(例: -n )。
argが指定されていない場合は必須 - help-助けを求めるときに表示される行(これは人の名前だと言っています)
- type -3つの可能な引数タイプの1つ: 0-オプション、 1-必須、 2-トリガー(ブール)
ナショナルおよびトリガー自体がその価値を決定することは注目に値します。 たとえば、未指定は値FALSEを取り、パラメータなしで指定されたトリガーはTRUEになります。 必要なパラメーターを指定しない場合、既存のパラメーターのいずれかを入力に送信すると、エラーが発生し、スクリプトは実行されません。
したがって、設定を設定して、Form_validationと同様に、ライブラリを初期化し、受信パラメーターの有効性を確認します。
if (!$this->command_line->valid_input())
有効でない場合-パラメーターがないか、エラーが発生した場合は、何が間違っているかを伝えるメソッドを呼び出します。
print $this->command_line->get_help();
すべてが正常に実行された場合、 get_argument()メソッドを使用して引数パラメーターを取得することでコードを実行できます。 これらは、フルネームとエイリアスの両方で参照できます。
$this->command_line->get_argument('-n') === $this->command_line->get_argument('--name')
4.これですべての準備が整ったので、コマンドラインを開いてスクリプトを確認します。
php index.php cli home
あなたは引数を入力していないので、彼はフレンドリーな方法でそれを使用する方法を教えてくれます:
使用法:php index.php cli hello [オプション]
オプションは次のとおりです。
-n、-その人の名前、こんにちは
したがって、名前を入力する必要があります。
php index.php cli home -n Habrahabr
以下が出力されます:
こんにちは、Habrahabr!
UPD:さらに、スクリプトは、引用符で囲まれた長い文字列をパラメーターとして取り除いた後、パラメーターとして使用することもできます。
php index.php cli home -n "Petr Ivanovich"
こんにちは、ペトル・イワノビッチ!
おわりに
ご覧のとおり、ライブラリは非常に原始的であり、コマンドラインで作業する際に必要となる可能性のある基本的な機能のみを実装しています。 それでも、たとえばcronのタスクに使用されるシステムCLIスクリプトの開発にかかる時間を少し節約できます。 これは非常に便利です。モデルやライブラリのすべての記述コードを使用して、たとえばサイトマップの生成やインジケーターの再カウントなどのシステムタスクを作成できます。
また、ライブラリのバージョンはまだかなり生のままであり、バグが発生する可能性があることを事前に警告したいと思います。 この件に関するご意見をお聞かせいただければ幸いです。また、 githubの開発に参加していただけると嬉しいです。