CodeIgniter2.1.4の不満点
10月20日からCodeIgniterを勉強してます。
基本的なCRUD機能を入れただけの簡潔なサンプルを作ってみました。
この過程で気づいた不満点をメモしておきます。
環境
- CodeIgniter 2.1.4
- SQLite3
- Bootstrap 3.0.0
URLサフィックスの問題、または外部JSファイルを読み込む機能の不備
URLサフィックスを設定すると、偽の拡張子を接尾辞としてURLに追加でき、一見してフレームワークで作ったことが分からないようにできます。
が、これを設定すると外部JavaScriptファイルを呼び出す手段が回りくどくなってしまいます。
どういうことかというと、CSSと違ってJavaScriptは外部ファイルを読み込むヘルパーがなく、scriptタグを書くしかありません。
で、src属性にパスを記述する際にはURLヘルパーのsite_url()
が便利です。
が、 URLサフィックスを使っている場合 は下記のように意図せぬ接尾辞が追加されてしまいます。
// PHPの記述 <?php $this->load->helper('url') ?> <script src="<?php print site_url('assets/js/test.js') ?>"></script> // 実際の表示 <script src="http://localhost/assets/js/test.js.html"></script>
“/test.js.html"って…orz
そんなわけで、現在はURLサフィックスは使っていません (-_-;)
フラッシュデータが正しく動作しない
フラッシュデータを使うと、一回限りのメッセージを表示する場合などに便利です。
が、なぜか私の環境では正しく動作しません。
一回限りのメッセージが表示されたりされなかったり、次のページで表示されたり…。
結局、現在は普通のセッションクラスを使って一回限りのメッセージを実装しています。
<!-- ビュー内 --> <?php if ($msg = $this->session->userdata('msg')) : ?> <div><?php print $msg ?></div> <?php $this->session->unset_userdata('msg') ?> <?php endif ?>
※ なお、セッションクラスを使う場合はconfig.php
のencryption_key
に任意の文字列を設定しなくてはなりません。
<?php $config['encryption_key'] = 'ninninomojiretsu';
感想
以上のような不満点はありますが、CodeIgniterにはおおむね好印象を持っています。
使い方やDBとの連携を規約でガチガチに固めずシンプルなMVCを提供してくれているので、規約外のカスタマイズにも気軽に手を付けられます。
初期設定も圧縮ファイルを解凍してサーバに置くだけですし、フレームワークを初めて使う場合はCakePHPよりもとっつきやすいのではないでしょうか。
オブジェクト指向やMVCを学ぶにはお手頃だと思います。