CodeIgniter 〜 2008年大躍進のPHPフレームワーク

34,555 views

Published on

OSC2008 Nagoya で行われたCodeIgniterユーザ会のセミナー資料。

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
34,555
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

CodeIgniter 〜 2008年大躍進のPHPフレームワーク

  1. 1. CodeIgniter 2008年大躍進のPHPフレームワーク 日本CodeIgniterユーザ会 Kenji Suzuki 2008/08/09CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  2. 2. CodeIgniterとは?  アメリカEllisLab社が開発配布している オープンソースのPHPフレームワーク  2006年2月リリース  http://codeigniter.com/CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  3. 3. CodeIgniterとは?  世界第4位のPHPフレームワーク Google Trendsによる検索数CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  4. 4. CodeIgniterの利用例 http://www.opensourcefood.com/CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  5. 5. CodeIgniterの利用例 http://www.2kurabe.com/CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  6. 6. フレームワークとは?  Webアプリケーションフレームワークとは? ➔Webアプリケーションの「枠組み」 ➔機能としては •過去のプログラミングの経験則の 規約化 •頻繁に使う機能を抽象化 (モジュール化、ライブラリ化) ➔Webアプリケーション全体を見通しよく 開発できるようにするものCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  7. 7. CodeIgniterに向いている人  パフォーマンス命  自由に書かせろ! ➔ 規約や制限が比較的少ない、拡張が容易  ドキュメントのないソフトは使えません  レンサバ大好き ➔ PHP4/5対応、PEAR不要、コマンドライン不要  他のフレームワークに挫折しました...orz  フレームワーク使ったことありませんCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  8. 8. CodeIgniterを使うメリット  はやい ➔軽量で動作が高速  やすい ➔習得し易い(低い学習コスト)  うまい ➔過去の習慣(コンベンション)、 優れた実践(グッドプラクティス)、 およびノウハウなどが、 ぐっと濃縮されてつまったものCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  9. 9. MVCモデルとは?  Controller(コントローラ)は、 入力データに従って適切なデータを呼び出 し、ModelやViewの連携など、アプリケーシ ョン全体の制御を行う  Model(モデル)は、 データベースへのアクセスやデータの修正 /加工などの処理を行う  View(ビュー)は、 処理結果の表示など、画面表示を担当するCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  10. 10. MVCモデル Controller 呼び出し ・リクエスト 流れの制御など ・データ入力 結果 結果 Model 結果 呼び出し データの修正/加工など View 見栄え、デザインなどCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  11. 11. CodeIgniterの構造  index.php ➔フロントコントローラ  application ➔アプリケーション固有  system ➔システム全体CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  12. 12. CodeIgniterの全体像 セキュリティ データベース ルーティング モデル ライブラリindex.php コントローラ ヘルパー キャッシュ ビュー プラグインCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  13. 13. URLの構造  URIセグメントベース・アプローチ http://example.jp/controller_class/method/arg http://example.jp/shop/search/123 class Shop extends Controller { ... function search($id) { $this­>load­>database(); ... } }CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  14. 14. Controller  Controllerクラスを継承  index()メソッドはデフォルトメソッド ➔ http://example.jp/time_message/ system/application/controllers/time_message.php class Time_message extends Controller { function index() { // タイトル $data[title] = 時刻メッセージ; // 現在の時刻 $data[now_time] = date("H時i分s秒"); // テンプレートに変数を代入 $this­>load­>view(time_message_view, $data); } }CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  15. 15. View  標準のビューファイルは、 単なるPHPファイル system/application/views/time_message_view.php <html> <head> <title><?php echo $title; ?></title> </head> <body> <?php echo $now_time; ?> </body> </html>CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  16. 16. View  (オプション)Smartyライクな テンプレートパーサクラス system/application/views/time_message_view.php <html> <head> <title>{title}</title> </head> <body> {now_time} </body> </html> ※Controllerの記述が標準のビューファイル  の場合とは、多少変わりますCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  17. 17. Model  オプション(使わないことも可能)  データベース・アクセスの方法 ➔標準的な問い合わせ ➔Active RecordCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  18. 18. 標準的な問い合わせ // SQLクエリの実行 $query = $this­>db­>query(SELECT id, name, email FROM bbs); // 表示処理 foreach ($query­>result() as $row) { echo $row­>id    .  ; echo $row­>name  .  ; echo $row­>email . <br />; } echo レコード数:  . $query­>num_rows();CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  19. 19. Active Record $this­>db­>select(id, name, email); $query = $this­>db­>get(bbs); foreach ($query­>result() as $row) { echo $row­>id    .  ; echo $row­>name  .  ; echo $row­>email . <br />; } echo レコード数:  . $query­>num_rows();CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  20. 20. Model  Modelクラスを継承 system/application/models/shop_model.php class Shop_model extends Model { function Shop_model() { parent::Model(); $this­>load­>database(); } function get_category_list() { $this­>db­>order_by(id); $query = $this­>db­>get(category); return $query­>result(); } }CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  21. 21. Modelの使い方  ロードする ➔ $this­>load­>model(Shop_model);  メソッドを呼び出す ➔ $this­>Shop_model­>get_category_list();CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  22. 22. ヘルパー  主にビューで使う役に立つ関数群  オブジェクト指向でなく手続き型  どんなものがあるか? ➔日付ヘルパー(日付の生成や変換) ➔Formヘルパー(Form部品の生成) ➔セキュリティヘルパー(セキュリティ処理) ➔URLヘルパー(URLに関するもの) ➔その他もろもろCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  23. 23. ヘルパーの使い方  ロードする ➔$this­>load­>helper(url);  使用する ➔anchor(search, 検索); <a href=”.../search”>検索</a>CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  24. 24. ライブラリ(クラス)  オブジェクト指向  どんなものがあるか? ➔コアシステムクラス •システムで自動的にロード • 例、ベンチマーク、入力、出力 ➔データベース関連のクラス ➔その他のクラス •例、セッション、Email、 ページネーション(ページャ)CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  25. 25. ライブラリ(クラス)の使い方  ロードする ➔ $this­>load­>library(table);  メソッドを呼び出す $tmpl = array (table_open =>  <table border="1" cellpadding="4" cellspacing="0">); $this­>table­>set_template($tmpl); $data = array( array(名前, 色, Size), array(フレッド, ブルー, Small), array(マリー, 赤, Large), array(ジョン, 緑, Medium) ); echo $this­>table­>generate($data);CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  26. 26. CodeIgniterのセキュリティ  フールプルーフではない! ➔フールプルーフとは? 「よくわかっていない人が扱っても安全」 -- http://e-words.jp/ ➔○○を使っていれば安全  ただし、CodeIgniterには、 ➔自動的に働く内部セキュリティ機能 ➔手動で利用するセキュリティ支援機能 •フレームワークを使わない場合より、 ずっと安全CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  27. 27. CodeIgniterのセキュリティ  内部セキュリティ機能 ➔URIセキュリティ •URIで使用できる文字を厳しく制限 ➔GET、POST、クッキーデータ • GETデータはクリア ➔register_globals •強制的にoffにCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  28. 28. CodeIgniterのセキュリティ  セキュリティ支援機能 ➔ XSSフィルタリング •セキュリティヘルパーと入力クラス ➔ バリデーション(検証)クラス •POSTされたデータの検証・整形 ➔ クエリのエスケープ処理 •$this->db->escape()メソッド •バインディング(例、WHERE id=?) •Active Recordでは自動的に エスケープ処理CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  29. 29. CodeIgniterの高い拡張性  標準ヘルパーやライブラリ ➔置き換え・継承可能 ➔コアシステムクラスの置き換えや継承も 可能 •標準のセッションクラスを PHP標準セッションに置き換える •標準のActive Recordをやめて Propelを使う  フックによる拡張 ➔フックポイントにコードを追加CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  30. 30. 日本CodeIgniterユーザ会  http://codeigniter.jp/  CodeIgniter日本語言語パック/ 日本語ユーザガイド作成中  メンバー募集中CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  31. 31. 新刊のお知らせ  日本初のCodeIgniter解説本 『CodeIgniter徹底入門』  2008年6月9日、 翔泳社より発売されました  http://codeigniter.jp/tettei/ Amazon.co.jpよりCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  32. 32. 終わり  ご静聴ありがとうございましたCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan

×