CodeIgniter For Project : Workshop 001 - Install Docker and CodeIgniter
CodeIgniter をモダンに改造してみた
-
Upload
masaru-matsuo -
Category
Technology
-
view
1.874 -
download
1
description
Transcript of CodeIgniter をモダンに改造してみた
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://[email protected]/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 めんどい
飽きるまで頑張ります
おわり 質問とかあります?