Help us understand the problem. What is going on with this article?

インスパイヤされて掲示板を作りたくなった(番外篇)

More than 3 years have passed since last update.

しぇるしぇるしぇる…

(この記事は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ってファイル名にしておく。特に深い意味はないけど、拡張子は不要。

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で実行する。

スクリーンショット 2016-02-24 2.29.13.png

で、たぶんこれだけではモデルを綺麗に表示できないので、 tests/Caster.php をコピペして自分のプロジェクトに持ってくると良さそう。ModelInterfaceはこれから実装します。

今回のおまけ

Emacsを使ってたら、今回作ったシェルをEmacs内から簡単に呼び出して利用できるよ。まったく便利すぎて困っちゃうんだが、これを起動するにはM-x com (省略されました。全てを読むにはわっふるわっふると書き込んでください)

スクリーンショット 2016-02-24 2.28.01.png

tadsan
僕に警備する自宅をください。Emacs初心者。Rubyist。 全ての投稿された記事は別段の表記がない限りはCC 3.0 BY-SA https://creativecommons.org/licenses/by-sa/3.0/deed.ja で二次利用できます。 記事中に含まれる全てのコードスニペットの著作権は抛棄するので、煮るなり焼くなりお好きにどうぞ。
https://tadsan.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした