laravel tinkerを触ってみたので、tinker(psysh)について書いてみました。
laravel tinkerはpsyshを搭載したもので同じものじゃないかなと思います。
laravel tinker(psysh)とは
起動すると、コンソールからphpコードを入力出来るようになり、結果が即時返ってきます。
こういうアプリケーションはREPL(レプル)と呼ばれているようです。
REPLはプログラムを入力して、結果が返ってきて、また入力して。。
というループを行うのでこう呼ばれているようです。
wiki =>
REPL (Read-Eval-Print Loop) とは、入力・評価・出力のループのこと。
起動方法
laravelのあるディレクトリでartisanコマンドを使って起動します。
php artisan tinker
tinkerを使う
helpを打つとコマンドリストがつらつら表示されます。
基本的な使い方と、よく使いそうなコマンドを下記に載せてます。
計算してみる
echoでも
>>> echo 100+11
111⏎
>>> echo 100+11+12+12
135⏎
>>> echo 100+11*10
210⏎
直接でも結果が返ってきますね。
>>> 100 + 11
=> 111
>>> 20 / 3
=> 6.6666666666667
>>> 10 * 10
=> 100
標準関数を使ってみる
途中まで、タイプしてtabキーを押すと補完してくれます。
結果が簡単に確認できますね。
>>> str_shuffle("123abc")
=> "a21c3b"
laravelで使われているクラスを使ってみる
プロジェクトで使っているクラスも使用して、挙動を確認することができます。
>>> $carbon = new Carbon\Carbon();
=> Carbon\Carbon @1591950070 {#4130
date: 2020-06-12 17:21:10.659105 Asia/Tokyo (+09:00),
timezone_type: 3,
timezone: "Asia/Tokyo",
}
>>> $carbon->now()->format("Y/m/d");
=> "2020/06/12"
自作関数を書く
「{」を入力すると、次の行を書くモードに移行して
閉じるまで続いて入力できます。
>>> function hello() {
...
... for ($i = 0; $i < 10; $i++) {
... echo "hello{$i}\n";
... }
... }
>>> hello()
hello0
hello1
hello2
hello3
hello4
hello5
hello6
hello7
hello8
hello9
docコマンド
docコマンドを使うと、標準関数やプロジェクトに入れているライブラリのクラス、プロパティなどの説明を確認できます。
使う前の設定として、
こちらでマニュアルを落として、~/.local/share/psysh/配下に配置しておきます。
標準関数(str_replace)を確認
>>> doc str_replace
function str_replace($search, $replace, $subject, &$replace_count = unknown)
Description:
検索文字列に一致したすべての文字列を置換する
// --- 省略 ---
laravelに入っているCarbonクラスを確認
>>> doc Carbon\Carbon
class Carbon\Carbon extends DateTime implements Carbon\CarbonInterface, DateTimeInterface, JsonSerializable
Description:
A simple API extension for DateTime.
// --- 省略 ---
historyコマンド
つらつらと使ったコマンドが表示されます。
画面一杯になった時は、Enterで進めて:qで抜けれます。
>>> history
0: Carbon::now()->addMonth()->endOfMonth()
1: Carbon::now()->addMonth()->endOfMonth();
2: Carbon
historyの最後から5件表示する場合は–tailを使います。
>>> history --tail 5
136: history --show
137: history -S
138: history
139: help history
140: history --replay
historyの前方から5件表示する場合は–headを使います。
>>> history --head 5
0: Carbon::now()->addMonth()->endOfMonth()
1: Carbon::now()->addMonth()->endOfMonth();
2: Carbon
3: Carbon::now()->addMonth()->endOfMonth();
4: Carbon\Carbon::now()->addMonth()->endOfMonth();
historyから再度コマンドを実行するには–showで指定した後に、
–replayを使います。
>>> history --show 4 --replay
Replaying 1 line of history
--> Carbon\Carbon::now()->addMonth()->endOfMonth();
=> Carbon\Carbon @1596207599 {#4138
date: 2020-07-31 23:59:59.999999 Asia/Tokyo (+09:00),
timezone_type: 3,
timezone: "Asia/Tokyo",
psyshを使う
laravel入れてない場合で、使いたい場合はpsyshを入れるといいです。
インストールする
wgetで取ってこれます!
wget https://psysh.org/psysh
chmod +x psysh
./psysh
使い方やコマンドは上記まで記載してきた、php artisan tinkerと変わらないです。
おわりに
便利ですね!
test.phpとかテストファイルを作って実行しなくても、簡単なことならここで確認できそうです。
あとdocコマンドがあるおかげで、マニュアルをググることが減りそうですね。
何か気づいたことがあれば記事を更新して行こうと思います。
コメント