CodeIgniter 〜 2008年大躍進のPHPフレームワーク
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 2,325 views

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

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

Statistics

Views

Total Views
2,325
Views on SlideShare
2,325
Embed Views
0

Actions

Likes
2
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • CodeIgniter 2008年大躍進のPHPフレームワーク 日本CodeIgniterユーザ会 Kenji Suzuki 2008/08/09CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterとは?  アメリカEllisLab社が開発配布している オープンソースのPHPフレームワーク  2006年2月リリース  http://codeigniter.com/CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterとは?  世界第4位のPHPフレームワーク Google Trendsによる検索数CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterの利用例 http://www.opensourcefood.com/CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterの利用例 http://www.2kurabe.com/CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • フレームワークとは?  Webアプリケーションフレームワークとは? ➔Webアプリケーションの「枠組み」 ➔機能としては •過去のプログラミングの経験則の 規約化 •頻繁に使う機能を抽象化 (モジュール化、ライブラリ化) ➔Webアプリケーション全体を見通しよく 開発できるようにするものCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterに向いている人  パフォーマンス命  自由に書かせろ! ➔ 規約や制限が比較的少ない、拡張が容易  ドキュメントのないソフトは使えません  レンサバ大好き ➔ PHP4/5対応、PEAR不要、コマンドライン不要  他のフレームワークに挫折しました...orz  フレームワーク使ったことありませんCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterを使うメリット  はやい ➔軽量で動作が高速  やすい ➔習得し易い(低い学習コスト)  うまい ➔過去の習慣(コンベンション)、 優れた実践(グッドプラクティス)、 およびノウハウなどが、 ぐっと濃縮されてつまったものCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • MVCモデルとは?  Controller(コントローラ)は、 入力データに従って適切なデータを呼び出 し、ModelやViewの連携など、アプリケーシ ョン全体の制御を行う  Model(モデル)は、 データベースへのアクセスやデータの修正 /加工などの処理を行う  View(ビュー)は、 処理結果の表示など、画面表示を担当するCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • MVCモデル Controller 呼び出し ・リクエスト 流れの制御など ・データ入力 結果 結果 Model 結果 呼び出し データの修正/加工など View 見栄え、デザインなどCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterの構造  index.php ➔フロントコントローラ  application ➔アプリケーション固有  system ➔システム全体CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterの全体像 セキュリティ データベース ルーティング モデル ライブラリindex.php コントローラ ヘルパー キャッシュ ビュー プラグインCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 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
  • 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
  • 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
  • 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
  • Model  オプション(使わないことも可能)  データベース・アクセスの方法 ➔標準的な問い合わせ ➔Active RecordCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 標準的な問い合わせ // 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
  • 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
  • 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
  • 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
  • ヘルパー  主にビューで使う役に立つ関数群  オブジェクト指向でなく手続き型  どんなものがあるか? ➔日付ヘルパー(日付の生成や変換) ➔Formヘルパー(Form部品の生成) ➔セキュリティヘルパー(セキュリティ処理) ➔URLヘルパー(URLに関するもの) ➔その他もろもろCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • ヘルパーの使い方  ロードする ➔$this­>load­>helper(url);  使用する ➔anchor(search, 検索); <a href=”.../search”>検索</a>CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • ライブラリ(クラス)  オブジェクト指向  どんなものがあるか? ➔コアシステムクラス •システムで自動的にロード • 例、ベンチマーク、入力、出力 ➔データベース関連のクラス ➔その他のクラス •例、セッション、Email、 ページネーション(ページャ)CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • ライブラリ(クラス)の使い方  ロードする ➔ $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
  • CodeIgniterのセキュリティ  フールプルーフではない! ➔フールプルーフとは? 「よくわかっていない人が扱っても安全」 -- http://e-words.jp/ ➔○○を使っていれば安全  ただし、CodeIgniterには、 ➔自動的に働く内部セキュリティ機能 ➔手動で利用するセキュリティ支援機能 •フレームワークを使わない場合より、 ずっと安全CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterのセキュリティ  内部セキュリティ機能 ➔URIセキュリティ •URIで使用できる文字を厳しく制限 ➔GET、POST、クッキーデータ • GETデータはクリア ➔register_globals •強制的にoffにCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterのセキュリティ  セキュリティ支援機能 ➔ XSSフィルタリング •セキュリティヘルパーと入力クラス ➔ バリデーション(検証)クラス •POSTされたデータの検証・整形 ➔ クエリのエスケープ処理 •$this->db->escape()メソッド •バインディング(例、WHERE id=?) •Active Recordでは自動的に エスケープ処理CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • CodeIgniterの高い拡張性  標準ヘルパーやライブラリ ➔置き換え・継承可能 ➔コアシステムクラスの置き換えや継承も 可能 •標準のセッションクラスを PHP標準セッションに置き換える •標準のActive Recordをやめて Propelを使う  フックによる拡張 ➔フックポイントにコードを追加CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 日本CodeIgniterユーザ会  http://codeigniter.jp/  CodeIgniter日本語言語パック/ 日本語ユーザガイド作成中  メンバー募集中CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 新刊のお知らせ  日本初の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
  • 終わり  ご静聴ありがとうございましたCodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan