とても簡単!自作のアプリにREPLを実装する方法

こんにちは。コバヤシです。

弊社では基本的にはフレームワークを使用して開発を行っていますが、 簡単なフォームであれば自作のライブラリを使用しています。
環境毎に設定を切り替えられるなど色々便利に作ってはいるのですが、 時々「現在の設定はどうなっていたっけ?」とか「ちゃんとproductionで動いている?」などなど、 確認したくなることがあります。 Laravelであれば、tinkerを使えば一発なのになぁと思っていたら、composerのライブラリで「PsySH」というのを見つけました。

と、言うわけで
今回は、自作のアプリにREPLである「PsySH」を組み込む方法を書いていきたいと思います。

REPLとは

REPLとはRead-Eval-Print-Loopの略で対話型実行環境のこと。 ユーザからの入力を評価して表示します。 CLIでPHPの関数や計算式を入力すると、その結果がすぐに表示されるので、 手軽にテスト等が出来ます。

PsySHとは

phpのREPL。LaravelのtinkerはPsySHのラッパーになります。
PHP標準のREPL(php -a)よりも高機能です。

PsySHをインストールする

composerを利用してインストールします。

composer  require psy/psysh

はい。これだけで組込は完了です。 簡単ですね!

./vendor/bin/psysh

と、打つと起動できます。

Psy Shell v0.9.9 (PHP 7.2.18 — cli) by Justin Hileman
>>> 1 + 1
=> 2
>>> 

式を入れると結果を返してくれます。echo とか打つ必要はありません。

ライブラリを読み込む

インストールしただけでは、自作のライブラリは読み込まれないので読み込むようにします。

PsySHを起動するルートディレクトリに「.psysh.php」を作成します。

<?php
return [
    'defaultIncludes' => [
        __DIR__ . '/vendor/autoload.php',
        __DIR__ ./libs/bootstrap.php'
    ],
];

こんな感じで、読み込みたいライブラリのパスを記述しておくと起動時に読み込んでくれます。

後は、独自メソッドなども自由に呼び出せるのでご随意に。

ちなみ、上記はプロジェクト毎の設定方法になるので、
すべてのプロジェクトの共通設定にしたければ、~/.config/psysh/config.phpに記述すれば良いようです。

まとめ

PsySHを導入すれば、手軽に自作アプリでもREPLを実装出来ます。 デバッガとしての使い方もあるようなので、 機会があれば「PsySH」の詳しい使い方についてもブログに書いていきたいと思います。