Klein.phpとFluentPDOでゆるふわなAPIを作る遊び
ぐーてんもーげん。
最近お仕事でPHPを書いてませんが、雑スクリプトをPHPで書く機会はまだまだあって、先日もちょいと後輩から「PHPで雑なJSON APIを書きたいんだけど、何で作るのがいいんですかね、Slim?」みたいなことを聞かれたので、「Klein.phpってのが気になってる」って言ったら、「何それ」みたいに言われたので、こうじゃろ、みたいな感じでざっくり書いていました。
有料の記事じゃないけどおもしろなので、PHPが気になる方はどうぞ。
Klein.php
Klein.phpはいわゆるSinatraインスパイアな軽量なルータースクリプト。どうでもいいことだけど、インスパイアとかいうとラーメンっぽさがあってよい。
composerを使ってインストールするのがいいですね。
composer require 'klein/klein'
で、いつも通りcomposerのautoload.phpを読み込んでこんな感じで使う。
こんな風に、Kleinのrespondにリクエストメソッド、パスを書いて、処理をcallableで渡す。
処理が短い場合はClosureを渡すと遊びな感じで書けてよい。
callableがreturnで返した文字列がレスポンスとなってクライアント側に返ることになる。
JSONを返す場合は、単にjson_encodeすればいい。headerは必要だけど。
お約束だけど最後のdispatchを書くのは忘れちゃいけない。漂白剤を使ったかのような驚きの白さをみることになる。
あと、POSTとか色々処理できるけど同じように簡単にできるので、Klein.phpについてはこれくらいでいいと思う。
FluentPDO
PDOはPHPの便利なデータベースライブラリだ。 コアに含まれているから適当にSQLを書くだけならお手軽、なんだけど、最近おじさんになってきたので、生のSQLを書くのが辛くなってきた。 書いてもいいんだけど、雑スクリプトでがんばりたくない。年をとった。
そんなめんどくさいおじさんがちょっとだけ頑張れそうなのが、今回紹介するFluentPDO。
FluentPDO, smart SQL builder for PHP
RailsのActiveRecordのような賢さはないけど、ちょっとだけ簡単に書けるようになるPDOのラッパーライブラリ。
例のようにcomposerでインストールする。
composer require 'lichtner/fluentpdo' dev-master
注意としてはdev-master
を指定しないといけない点。バージョンタグが切られてないような気がする。
masterの最新を追うという男気あふれるスタイルだ。攻めていきたい。
こんな感じにPDOをラップして使う。fromとかwhereとかSQLっぽい。
じゃあselect(null)ってなんだってなる。
FluentPDOはデフォルトですべてのカラムを選択してしまうんだけど、select(null)
は
カラム選択をリセットする。SELECT *
なクエリを使いたいならこれは不要だけど、
だいたいは取得するカラムを選びたいだろうから、邪悪な感じがする。
まとめ
最後に邪悪な話を書いたから邪悪な感が出てるけど、便利なのでみんな使ってみてね。
INSERT
やUPDATE
も似たような感じで書けるので、何度もSQLを書いて疲れてる人にはオススメです。