Posted at

[Laravel] 対話的(REPL)にスクリプトを実行する

More than 1 year has passed since last update.


概要

Laraveltinkerを用いて対話的にスクリプトを実行する。tinkerはRuby on Railsで言うところのrails consoleで、Laravelを用いた環境に対するプログラムの発行を行うツールである(所謂REPL)


起動

artisanのあるディレクトリに移動し、以下のコマンドで起動できる

$ php artisan tinker

Psy Shell v0.8.6 (PHP 5.6.30-12~ubuntu16.04.1+deb.sury.org+1 — cli) by Justin Hileman


PHPプログラムの実行

tinkerを起動すると、対話的にプログラムを実行することができる

>>> 5 + 2

=> 7
>>> 2 ** 8
=> 256

当然PHPの標準ライブラリを利用することも可能

>>> strlen('hogehoge');

=> 8
>>> array_map(function($n) { return $n * 10; } , [2,4,6,8,10]);
=> [
20,
40,
60,
80,
100,
]

複数行に跨ぐことも可能。書きづらいので基本的にワンライナーであるべきだとは思う。

>>> function sayHello($name) {

... return "Hello, $name";
... }
>>> sayHello('sasaki');
=> "Hello, sasaki"


Laravel Modelの操作

Userモデルが存在する時、tinkerを用いてUserの作成と取得を行う。

作成

>>> $user = new App\User();

=> App\User {#703}
>>> $user->email = 'hogehoge@fugafuga.com';
=> "hogehoge@fugafuga.com"
>>> $user->password = md5('hogehoge');
=> "329435e5e66be809a656af105f42401e"
>>> $user->save();
=> true

取得

>>> $user = new App\User();

=> App\User {#703}
>>> $user->first();
=> App\User {#714
id: 1,
email: "hogehoge@fugafuga.com",
name: "",
created_at: "2017-07-11 11:37:49",
updated_at: "2017-07-11 11:37:49",
deleted_at: null,
}


所感


  • Railsで出来るならLaravelでも出来るでしょと思ったら普通にできた。でもRailsのほうが便利かな。

  • DBの内容確認したいけどSQL書くのが面倒という時にも使えそう

  • 実装したロジックの動作確認の戦力になりそう

  • Laravel関係なくPHPの簡単な動作確認なんかにも使えそう