codeigniter - vreffendi.files.wordpress.com · codeigniter and its logo are property of ellislab...

Post on 30-Aug-2019

16 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

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

日本CodeIgniterユーザ会Kenichi Ando & Kenji Suzuki

2008/07/21

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterとは?

アメリカEllisLab社が開発配布しているオープンソースのPHPフレームワーク

2006年2月リリース

http://codeigniter.com/

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterとは?

世界第4位のPHPフレームワーク

Google Trendsによる検索数

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの利用例

http://www.opensourcefood.com/

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの利用例

http://www.2kurabe.com/

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

フレームワークとは?

Webアプリケーションフレームワークとは?

➔Webアプリケーションの「枠組み」

➔機能としては

•過去のプログラミングの経験則の規約化

•頻繁に使う機能を抽象化(モジュール化、ライブラリ化)

➔Webアプリケーション全体を見通しよく開発できるようにするもの

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの10利点(1/2)

1. 少ないメモリとディスクで動く

2. 高いパフォーマンス

3. PHP4/5 対応 (Web ホスティングとの幅広い互換性)

4. 設定ファイルをほとんど触わることなく動く

5. コマンドラインによる操作を必要としない

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの10利点(2/2)

6. コーディング規約を硬く守ることを強要しない

7. PEAR のような大規模で一枚岩な構造のライブラリを必要としない

8. テンプレート言語の学習が必要ない

9. シンプルな機能構成

10. 明確で完全なドキュメント(仕様書)

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterを使うメリット

速い

➔軽量で動作が高速

易い

➔習得し易い(低い学習コスト)

うまい

➔過去の習慣(コンベンション)、優れた実践(グッドプラクティス)、およびノウハウなどが、ぐっと濃縮されてつまったもの

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの構造

index.php

➔フロントコントローラ

application

➔アプリケーション固有

system

➔システム全体

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

URLの構造

URIセグメントベース・アプローチhttp://example.jp/controller_class/method/arg

class Shop extends Controller {

...

function search($id){

$this­>load­>database();...

}}

http://example.jp/shop/search/123

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

MVCモデルとは?

Controller(コントローラ)は、入力データに従って適切なデータを呼び出し、ModelやViewの連携など、アプリケーション全体の制御を行う

Model(モデル)は、データベースへのアクセスやデータの修正/加工などの処理を行う

View(ビュー)は、処理結果の表示など、画面表示を担当する

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Controller

class Time_message extends Controller {function index(){

// タイトル$data['title'] = '時刻メッセージ';// 現在の時刻$data['now_time'] = date("H時i分s秒");

// テンプレートに変数を代入$this­>load­>view('time_message_view', $data);

}}

system/application/controllers/time_message.php

Controllerクラスを継承

index()メソッドはデフォルトメソッド

➔http://example.jp/time_message/

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

View

<html><head><title><?php echo $title; ?></title></head><body><?php echo $now_time; ?></body></html>

system/application/views/time_message_view.php

標準のビューファイルは、単なるPHPファイル

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

View

<html><head><title>{title}</title></head><body>{now_time}</body></html>

system/application/views/time_message_view.php

(オプション)Smartyライクなテンプレートパーサクラス

※Controllerの記述が標準のビューファイル の場合とは、多少変わります

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Model

オプション(使わないことも可能)

データベース・アクセスの方法

➔標準的な問い合わせ

➔Active Record

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

標準的な問い合わせ

// 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 Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

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 Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Model

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();

}

}

Modelクラスを継承

system/application/models/shop_model.php

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

Modelの使い方

ロードする

➔ $this­>load­>model('Shop_model');

メソッドを呼び出す

➔ $this­>Shop_model­>get_category_list();

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ヘルパー

主にビューで使う役に立つ関数群

オブジェクト指向でなく手続き型

どんなものがあるか?

➔日付ヘルパー(日付の生成や変換)

➔Formヘルパー(Form部品の生成)

➔セキュリティヘルパー(セキュリティ処理)

➔URLヘルパー(URLに関するもの)

➔その他もろもろ

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ヘルパーの使い方

ロードする

➔$this­>load­>helper('url');

使用する

➔anchor('search', '検索');

<a href=”.../search”>検索</a>

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ライブラリ(クラス)

オブジェクト指向

どんなものがあるか?

➔コアシステムクラス

•システムで自動的にロード

•例、ベンチマーク、入力、出力

➔データベース関連のクラス

➔その他のクラス

•例、セッション、Email、ページネーション

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

ライブラリ(クラス)の使い方

ロードする

➔$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 Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterのセキュリティ

フールプルーフではない!

内部セキュリティ機能

➔URIセキュリティ

•URIで使用できる文字を厳しく制限

➔GET、POST、クッキーデータ

•GETデータはクリア

➔register_globals

•強制的にoffに

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterのセキュリティ

セキュリティ支援機能

➔XSSフィルタリング

•セキュリティヘルパーと入力クラス

➔バリデーション(検証)クラス

•POSTされたデータの検証・整形

➔クエリのエスケープ処理

•$this->db->escape()メソッド

•バインディング(例、WHERE id=?)

•Active Recordでは自動的にエスケープ処理

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

CodeIgniterの拡張

高い拡張性

➔ヘルパー

•作成・置き換え・継承

➔ライブラリ

•作成・置き換え・継承

•コアシステムクラスの拡張や置き換えも可能

➔フックによる拡張

•フックポイントにコードを追加

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

日本CodeIgniterユーザ会

http://codeigniter.jp/

CodeIgniter日本語言語パック/日本語ユーザガイド作成中

メンバー募集中

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

新刊のお知らせ

日本初のCodeIgniter解説本『CodeIgniter徹底入門』

2008年6月9日、翔泳社より発売されました

http://codeigniter.jp/tettei/

Amazon.co.jpより

CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc

終わり

ご静聴ありがとうございました。

top related