タグ別アーカイブ: PHP

CodeIgniter 3でREST風のAPIを実装する

GET/POST以外のHTTPメソッド/JSONで入力

REST風のAPIを実装するには一般的にはGETやPOSTだけでなくPUTやDELTE等のHTTPメソッドからの入力にも対応する必要が有りますが、CodeIgniter 3.0.xを利用している環境ではどうやって拾うの?という話。

CodeIgniter 3からInputライブラリに raw_input_stream というプロパティが追加されており、そこから読み込むだけで簡単に文字列を取得できます。

Input Class
https://www.codeigniter.com/user_guide/libraries/input.html

また、このraw_input_streamを使う事でフォームのようなkey=valueではない($this->input->post()で拾えない)値が取得出来ます。あとはJSON形式で投げているならjson_decodeしたりなんなりで。

// raw_input_streamとjson_decodeはnullを返すことが有るよ!
$raw_input = $this->input->raw_input_stream;
$json = json_decode($raw_input);

Q. CodeIgniter 2.x の場合
A1. CodeIgniter 3.xにアップグレードする。1日あれば動くようになるはず。
A2. PHP 5.5以前の環境であるなら5.6以降にして php://input ストリームを開く。
A3. CI_Inputクラス魔改造。お勧め出来ない。

柔軟にURLとコントローラの対応を取りたい

コントローラクラスのフォルダ階層分けやurlヘルパーでのsegment取得、引数指定で頑張ってもいいですが、コントローラに_remapメソッドを定義すれば柔軟性が上がります。URLだけを見るルータ側での設定とは違ってHTTPメソッドによって呼び出すメソッドを変えるような事もやりやすくなるかもしれません。

Controllers — CodeIgniter 3.0.2 documentation Remapping Method Calls
https://www.codeigniter.com/user_guide/general/controllers.html#remapping-method-calls

例えば存在しない機能を叩いた場合のWeb API向け404処理などを振り分けやすくなりますね。


今も生きているPHPフレームワーク CodeIgniter、3.0RCへ

PHP Webアプリケーションフレームワーク CodeIgniter の今について。

cakePHPなどのRailsに影響を受けたフレームワークに比べると、スクラッチのコードをががっと書いたり、ActiveRecordが実質的にお手軽SQL作成器だったり、MVCのMを作らないなんて選択も出来たり、そのゆるさと学習コストの低さから人気だったCodeIgniterですが、以下のOSLライセンスの問題などからFuel PHPや、DIだComposerだSymfony2だとなかなか現代的なLaravelへの移行が起きていると言われています。

【重要】EllisLabが現行の「CodeIgniterライセンス」はGPLと互換性がないという見解を公表しました
http://codeigniter.jp/blog/article/65

とはいえ、今となってはそのライセンスの問題も解決しており、CodeIgniterは(一応)生きているよという話です。正直、公式サイトを見れば書いてある事だけなのですが、あまりにも日本語ソースが無い(みんなもう興味ない……?)ので、簡単にまとめてみます。

ライセンスの問題はMIT Licenseになり解決

CodeIgniterのオーナーが EllisLab から、ブリティッシュ・コロンビア工科大学に移る事になりました。それに合わせてCodeIgniter 3.0も安心のMIT Licenseへの変更となりました。よほどの事が無ければJavaやMySQL、OpenOffice.orgのような事にはならないのではないでしょうか。

CodeIgniter 2.2.1 はPHP 5.6対応へ

CodeIgniter v2.2.0の時点で、ソースを1行だけ修正すればPHP5.6で動作する状態ではあったのですが、修正なく動作するようになりました。2.x系に関してはCodeIgniterライセンスのままなのですが、今2.xで動作しているシステムを新しいサーバーへ移行するような事になっても、新しいバージョンのPHPで利用する事が出来ます(もちちろん自分で書いた部分のコードは検証が必要です)。XSSフィルタなども修正されています。

CodeIgniter 2.2.1 Released 2015.01.22
http://forum.codeigniter.com/thread-843.html

CodeIgniter 3.0 リリース候補版の登場

ライセンスなどの問題も解決したCodeIgniter 3.0のリリース候補版がついに登場しました。ドキュメントもそこそこわかりやすい物が用意されています。2.xからのアップグレードも可能で、これまでのバージョン同様、移行マニュアルが用意されています。

CodeIgniter 3.0 Release Candidate 2015.01.26
http://forum.codeigniter.com/thread-890.html

と、すごくざっくりですが3点まとめてみました。
既にLaravelでバリバリやっている人や、まだ使ってはいないけどそろそろリッチなフレームワークへ移りたい方※、PSR-2準拠でコーディングしたいんじゃーという方ももちろん多く居ると思います。ただ、重厚過ぎないフレームワークの上で素のPHPをさくっと書きたい時や、今既にCodeIgniter 2.xで動いているシステムを今後も長く使っていくためのリプレースには悪くない選択肢ではないでしょうか。

※私自身、そろそろ勉強したいなと。

追記:
2015年3月30日にCodeIgniter 3.0の正式版がリリースされました。
http://www.codeigniter.com/


PHPカンファレンス2014と最近の写真

PHPカンファレンス2014に参加してきました。徳丸 浩さんのセキュリティについての話やHHVM/Hack Langの話、各種フレームワーク、サービスが大きくなっていく際のスケールアウト、その他さまざまな視点・分野での発表が有り大変刺激的でした。大きく手が入るらしいPHP NG楽しみですね。CI関連も頑張って少しずつ導入していきたい。

技術的に興味深いのもそうですが、「楽しそうだな」「PHPが好きなんだな」っていう所も感じられたのが和やかな感じでよかったですね。

そんな感じで最近の写真です。横浜の氷川丸、神奈川県 伊勢原の大山など。

照明 氷川丸 氷川丸 機関部 氷川丸 三等客室 氷川丸 時計 大山 大山 鳥居 大山 頂上本社 大山 ケーブルカー