読者です 読者をやめる 読者になる 読者になる

なんかかきたい

プログラミングなどの個人的なメモやサークル「ゆきいろパラソル」の情報を載せてます

Klein.phpとFluentPDOでゆるふわなAPIを作る遊び

PHP

ぐーてんもーげん。

最近お仕事でPHPを書いてませんが、雑スクリプトPHPで書く機会はまだまだあって、先日もちょいと後輩から「PHPで雑なJSON APIを書きたいんだけど、何で作るのがいいんですかね、Slim?」みたいなことを聞かれたので、「Klein.phpってのが気になってる」って言ったら、「何それ」みたいに言われたので、こうじゃろ、みたいな感じでざっくり書いていました。

有料の記事じゃないけどおもしろなので、PHPが気になる方はどうぞ。

Klein.php

Klein.phpはいわゆるSinatraインスパイアな軽量なルータースクリプト。どうでもいいことだけど、インスパイアとかいうとラーメンっぽさがあってよい。

chriso/klein.php · GitHub

composerを使ってインストールするのがいいですね。

composer require 'klein/klein'

で、いつも通りcomposerのautoload.phpを読み込んでこんな感じで使う。

Klein.php sample

こんな風に、Kleinのrespondにリクエストメソッド、パスを書いて、処理をcallableで渡す。

処理が短い場合はClosureを渡すと遊びな感じで書けてよい。

callableがreturnで返した文字列がレスポンスとなってクライアント側に返ることになる。

JSONを返す場合は、単にjson_encodeすればいい。headerは必要だけど。

Klein.php sample2

お約束だけど最後のdispatchを書くのは忘れちゃいけない。漂白剤を使ったかのような驚きの白さをみることになる。

あと、POSTとか色々処理できるけど同じように簡単にできるので、Klein.phpについてはこれくらいでいいと思う。

FluentPDO

PDOはPHPの便利なデータベースライブラリだ。 コアに含まれているから適当にSQLを書くだけならお手軽、なんだけど、最近おじさんになってきたので、生のSQLを書くのが辛くなってきた。 書いてもいいんだけど、雑スクリプトでがんばりたくない。年をとった。

そんなめんどくさいおじさんがちょっとだけ頑張れそうなのが、今回紹介するFluentPDO。

FluentPDO, smart SQL builder for PHP

RailsActiveRecordのような賢さはないけど、ちょっとだけ簡単に書けるようになるPDOのラッパーライブラリ。

例のようにcomposerでインストールする。

composer require 'lichtner/fluentpdo'
dev-master

注意としてはdev-masterを指定しないといけない点。バージョンタグが切られてないような気がする。 masterの最新を追うという男気あふれるスタイルだ。攻めていきたい。

FluentPDO example

こんな感じにPDOをラップして使う。fromとかwhereとかSQLっぽい。

じゃあselect(null)ってなんだってなる。

FluentPDOはデフォルトですべてのカラムを選択してしまうんだけど、select(null)は カラム選択をリセットする。SELECT *なクエリを使いたいならこれは不要だけど、 だいたいは取得するカラムを選びたいだろうから、邪悪な感じがする。

まとめ

最後に邪悪な話を書いたから邪悪な感が出てるけど、便利なのでみんな使ってみてね。

INSERTUPDATEも似たような感じで書けるので、何度もSQLを書いて疲れてる人にはオススメです。