しぇるしぇるしぇる…
(この記事は4の直後に書かれたけれど全然時間がとれなくて話が進んでないので番外扱ひで…)
過去ログ
スレ | 内容 |
---|---|
インスパイヤされて掲示板を作りたくなった(1) | PHPとComposer、あとべんりなライブラリ |
インスパイヤされて掲示板を作りたくなった(2) | SQLite3のスキーマ設計とTwigテンプレート |
インスパイヤされて掲示板を作りたくなった(3) | ルーティングとモデルの説明 |
インスパイヤされて掲示板を作りたくなった(4) | ドキュメント生成とモデル、SQL |
インスパイヤされて掲示板を作りたくなった(番外篇) | ← イマココ |
PHPとの対話を
Rubyにはirb
ってコマンドがあったり、Ruby on Railsにはrails console
ってコマンドがあったりして、ターミナルからコードを実行できたりする。
大丈夫、別にPHPだって負けてないし、Railsみたいな巨大なフレームワークがなくたって実現できるから。
例によってライブラリを入れてみる。詳しくはPHPを「シェル化」する [psy/psysh] - 超PHPerになろうに書いたんだけど。
composer require --dev psy/psysh
で、実行ファイルを作ってみよう。トップレベルにshell
ってファイル名にしておく。特に深い意味はないけど、拡張子は不要。
#!/usr/bin/env php
<?php
namespace InspireBBS;
// Composerのオートローダーを読み込む
require_once __DIR__ . '/vendor/autoload.php';
// ほかに初期化用のPHPファイルがあれば読み込んでおく
// require_once …
$dotenv = new \Dotenv\Dotenv(__DIR__);
$dotenv->overload();
$dotenv->required('DB_DSN')->notEmpty();
echo __NAMESPACE__ . " shell\n";
$config = new \Psy\Configuration();
$config->addCasters([
'InspireBBS\Model\ModelInterface' => '\InspireBBS\Caster::castModel',
]);
$sh = new \Psy\Shell($config);
// シェル起動直後にプロジェクトのnamespaceを設定する
$sh->addCode(sprintf("namespace %s;", __NAMESPACE__));
$sh->run();
// 終了時に表示するメッセージ
echo "Bye.\n";
ファイルを保存したらchmod +x ./shell
で実行権限をつけておく。で、./shell
で実行する。
で、たぶんこれだけではモデルを綺麗に表示できないので、 tests/Caster.php
をコピペして自分のプロジェクトに持ってくると良さそう。ModelInterface
はこれから実装します。
今回のおまけ
Emacsを使ってたら、今回作ったシェルをEmacs内から簡単に呼び出して利用できるよ。まったく便利すぎて困っちゃうんだが、これを起動するにはM-x com
(省略されました。全てを読むにはわっふるわっふると書き込んでください)