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

Post on 21-May-2015

1.861 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

@localdisk 2014/04/26

!

自己紹介• @localdisk (Matsuo Masaru)

• PHP/Java プログラマ

• 最近は Laravel. 以前は CodeIgniter

• Fuel/Cake は挫折

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

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

• 動作も開発速度も!

• 安い!

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

• うまい!

• 鮮度が落ちてきてる…

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

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

• PHP 5.1.6 newer

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

• Oh…

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

• CI_Unit…

• get_instance

• 大体こいつのせい

• Controller が singleton

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

• なぜ CI_Loaderは返さない…

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

• 作ったら公開しろ

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

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

• あと Java の知識とか

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

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

• Igniter -> 導火線

• 導火線の次…?

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

CodeExploderの概要1• PHP 5.4 ~

• short array syntax 使いたかった

• built in web server

• DI Container

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

CodeExploderの概要2

• Test Easy!

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

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

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

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

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

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

• GW になんとかしたい

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

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

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

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

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

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

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

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

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

Composer は使える

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

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

• “illuminate/container"

• Laravel の DI Container

• Pimple の上位互換

変更点(DI Container)• get_instance

• Controller じゃなくて Loader を返す

• Controller の singleton をやめた

• 脱 Fat Controller

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

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

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

• 関数自体は生かす

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

変更点(CodeIgniter.php)

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

• クラスにする

• 今はただのスクリプト

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

変更点(その他)• DB

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

• illuminate/database に変更を検討中

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

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

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

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

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

• composer dump-autoload めんどい

飽きるまで頑張ります

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

top related