作成日:2017-11-15, 更新日:2017-11-22
基本
・FuelPHPのフォルダの中に「oil」ってのがいるはず。
・コマンドラインで実行したいファイルは「app/tasks」フォルダの中にいれる。
OILファイルが無いとき
「コマンドラインからインストールしろ」だったり「FuelPHPのインストール時に○○しろ」とか・・・手っ取り早く行うなら「GitHubのFuel」からOILをコピる。
拡張子は不要っぽい。
次に自サイトのfuelディレクトリと同一階層にoilファイルを置く。
テスト・・・する前に環境
環境 | Win、Xampp |
---|---|
FuelPHPのパス | C:\xampp\htdocs\test_fuel |
oilのパス | C:\xampp\htdocs\test_fuel\oil |
実行ファイルのあるフォルダのパス | C:\xampp\htdocs\test_fuel\app\tasks\oil |
テストする
コマンドラインから、oilの場所にカレントを移してphpで実行
- oilの場所にカレントを移す
-
$ cd C:\xampp\htdocs\test_fuel
- oilのヘルプや実行可能なファイルの確認
-
$ php oil refine
- テスト(「app/tasks/robots.php」を実行)
-
$ php oil refine robots
変なロボットが表示されればOK
「php oil refine」でエラー
「$ php oil refine」でエラーになることがある。
'php' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
「php」のpathを通せばいい(環境変数)。
面倒だから・・・phpのpathを指定して実行(毎回path指定して実行のほうが面倒だったりするけど・・・)
xamppだと「C:\xampp\php\php.exe」ってのを実行させればいい
$ C:\xampp\php\php oil refine
ちなみに「tasks」の中にエラーのあるファイルとかあると「$ php oil refine」でエラーになる。
tasks内からmodelとか呼び出したい
頭に「\」をつけとけばよさげ
- 「app\classes\util\zebra.php」の「recatnap()」を実行する場合
-
\Util_Zebra::recatnap()
tasks内で例外を使いたい
FuelPHPでOILを使うときにtry・catchで例外処理を行おうとしたら下記のようなエラーが出てきた。
PHP Fatal error: Class ‘Fuel\Tasks\Exception’ not found in ○○○/app/tasks/○○○.php on line ○○
「\」をExceptionの前につけていないのが原因。
try { throw new \Exception('test Exception'); } catch (\Exception $e) { echo $e->getMessage(); }
引数を使う
-
- app\tasks\Output01.php
-
<?php namespace Fuel\Tasks; class Output01 { public static function run( $name='' ) { echo $name; } }
- コマンドラインで実行
-
$ php oil refine output01 123
引数を2つ使う
-
- app\tasks\Output02.php
-
<?php namespace Fuel\Tasks; class Output01 { public static function run( $argv1='', $argv2='' ) { echo $argv1 . "\n"; echo $argv2 . "\n"; } }
- コマンドラインで実行
-
$ php oil refine output02 123 456