codeigniter をモダンに改造してみた

24
CodeIgniter をモダンに 改造してみた FuelPHP & CodeIgniter ユーザーの集い #4 @localdisk 2014/04/26

Upload: masaru-matsuo

Post on 21-May-2015

1.873 views

Category:

Technology


1 download

DESCRIPTION

FuelPHP&CodeIgniter ユーザの集い #4 で「CodeIgniter をモダンに改造してみた」という話をさせていただきました。 http://atnd.org/events/49496

TRANSCRIPT

Page 1: CodeIgniter をモダンに改造してみた

CodeIgniter をモダンに 改造してみた

FuelPHP & CodeIgniter ユーザーの集い #4

@localdisk 2014/04/26

!

Page 2: CodeIgniter をモダンに改造してみた

自己紹介• @localdisk (Matsuo Masaru)

• PHP/Java プログラマ

• 最近は Laravel. 以前は CodeIgniter

• Fuel/Cake は挫折

• おんせん県在住(来月から修羅の国)

Page 3: CodeIgniter をモダンに改造してみた

CodeIgniter使ってますか?• 早い!

• 動作も開発速度も!

• 安い!

• 学習コストパフォーマンス高い

• うまい!

• 鮮度が落ちてきてる…

Page 4: CodeIgniter をモダンに改造してみた

CodeIgniterの問題点1• 2014/04/26 現在 2.1.4

• ぶっちゃけ2年半くらい進歩がない

• PHP 5.1.6 newer

• 引き取り手が決まるまで 3.0 はリリースされない

• Oh…

Page 5: CodeIgniter をモダンに改造してみた

CodeIgniterの問題点2• 便利だが、テストがしにくい

• CI_Unit…

• get_instance

• 大体こいつのせい

• Controller が singleton

• Core ライブラリ等が勝手にフィールドに生える

• なぜ CI_Loaderは返さない…

Page 6: CodeIgniter をモダンに改造してみた

僕たちはプログラマだ• なければ作れ

• 作ったら公開しろ

• フレームワークを作り変えるの実際勉強になる

• Laravel の知見がかなり役立ってる

• あと Java の知識とか

Page 7: CodeIgniter をモダンに改造してみた

名前を決める• ぶっちゃけ一番時間がかかった

• CodeIgniterの次という意味にしたい

• Igniter -> 導火線

• 導火線の次…?

Page 8: CodeIgniter をモダンに改造してみた

CodeExploder!Exploder -> 起爆装置 デスマーチ爆発しろ

Page 9: CodeIgniter をモダンに改造してみた

CodeExploderの概要1• PHP 5.4 ~

• short array syntax 使いたかった

• built in web server

• DI Container

• Core/Library クラスの拡張は DI Container を使う

Page 10: CodeIgniter をモダンに改造してみた

CodeExploderの概要2

• Test Easy!

• 素の PHP Unit が動くようにする

• CI_Unit とかいらんかったんや…

• 強力なコードジェネレータ

• 実用レベルのちゃんとしたやつ

Page 11: CodeIgniter をモダンに改造してみた

悲しいお知らせ• リリース間に合わなかった…

• 全部引っ越しが悪いんや…

• GW になんとかしたい

Page 12: CodeIgniter をモダンに改造してみた

変更点(ディレクトリ構造)

CodeIgniter | — index.php | — application | | — controllers | — system | | — core運用時、 index.php の位置を変えたりしなければならなくて不便…。

Page 13: CodeIgniter をモダンに改造してみた

変更点(ディレクトリ構造)

CodeExploder | — app | — bootstrap | | — 起動するときに走る | — public (css/js/img) | — system |public を公開ディレクトリにする | — system!

Page 14: CodeIgniter をモダンに改造してみた

変更点(名前空間)<?php// 名前空間// PSR-0 に合わせた// クラスプレフィックスの CI_ 削除// MY_ もいらないnamespace CodeExploder\Core;!class Benchmark{ // ベンチマーク}!

Page 15: CodeIgniter をモダンに改造してみた

変更点(Composer)# Composer を使わなくていいのは小学生まで$ git clone https://[email protected]/localdisk/codeexploder.git!$ composer install

Page 16: CodeIgniter をモダンに改造してみた

変更点(Composer)• Composer を使うと CI_Loader の役割がかなり減る

• composer.json の autoload files を定義しておけば helper の require もいらない

• 余談だけど、別にPackagist に登録しなくても

Composer は使える

Page 17: CodeIgniter をモダンに改造してみた

変更点(DI Container)• 禁断の CI_Loaderを駆逐する

• 全面書き直し DI Container にした

• “illuminate/container"

• Laravel の DI Container

• Pimple の上位互換

Page 18: CodeIgniter をモダンに改造してみた

変更点(DI Container)• get_instance

• Controller じゃなくて Loader を返す

• Controller の singleton をやめた

• 脱 Fat Controller

• これで CI_Unit とさよならできる

Page 19: CodeIgniter をモダンに改造してみた

変更点(Common.php)• 消去(予定)

• ユーティリティファンクションの集合なので適切な役割を持つクラスに受け取ってもらう

• 関数自体は生かす

• Core/Library は DI 制御なのでコンテナにアクセスすればどこからでも使える

Page 20: CodeIgniter をモダンに改造してみた

変更点(CodeIgniter.php)

• 大幅なリファクタリング(予定)

• クラスにする

• 今はただのスクリプト

• テストできないじゃないか!

Page 21: CodeIgniter をモダンに改造してみた

変更点(その他)• DB

• シンプルだがいささか貧弱な QueryBuilder.

• illuminate/database に変更を検討中

• Laravel の ORM. 使いやすい.Migration/Seedeが便利

• PyroCMS (CodeIgniter製のCMS)もDB周りはilluminate/databaseを使っている

Page 22: CodeIgniter をモダンに改造してみた

変更点(その他)• ちゃんとテスト書く

• 本家のテストが最近充実してる

• しっかりしたコードジェネレータを作る

• composer dump-autoload めんどい

Page 23: CodeIgniter をモダンに改造してみた

飽きるまで頑張ります

Page 24: CodeIgniter をモダンに改造してみた

おわり 質問とかあります?