codeigniter - skripsi atau tugas akhir informatika … and its logo are property of ellislab inc...
TRANSCRIPT
CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc
CodeIgniter 2008年大躍進のPHPフレームワーク
日本CodeIgniterユーザ会Kenji Suzuki
2008/08/09
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に向いている人
パフォーマンス命
自由に書かせろ!
➔規約や制限が比較的少ない、拡張が容易
ドキュメントのないソフトは使えません
レンサバ大好き
➔PHP4/5対応、PEAR不要、コマンドライン不要
他のフレームワークに挫折しました...orz
フレームワーク使ったことありません
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
MVCモデルとは?
Controller(コントローラ)は、入力データに従って適切なデータを呼び出し、ModelやViewの連携など、アプリケーション全体の制御を行う
Model(モデル)は、データベースへのアクセスやデータの修正/加工などの処理を行う
View(ビュー)は、処理結果の表示など、画面表示を担当する
CodeIgniter Users Group in JapanCodeIgniter and its logo are property of EllisLab Inc
MVCモデル
Controller流れの制御など
View見栄え、デザインなど
Modelデータの修正/加工など
・リクエスト・データ入力
結果
結果
結果
呼び出し
呼び出し
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
CodeIgniterの全体像
index.php
ルーティング
キャッシュ
セキュリティ
コントローラ
モデル
ビュー
データベース
ライブラリ
ヘルパー
プラグイン
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
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のセキュリティ
フールプルーフではない!
➔フールプルーフとは?「よくわかっていない人が扱っても安全」 -- http://e-words.jp/
➔○○を使っていれば安全
ただし、CodeIgniterには、
➔自動的に働く内部セキュリティ機能
➔手動で利用するセキュリティ支援機能
•フレームワークを使わない場合より、ずっと安全
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の高い拡張性
標準ヘルパーやライブラリ
➔置き換え・継承可能
➔コアシステムクラスの置き換えや継承も可能
•標準のセッションクラスをPHP標準セッションに置き換える
•標準のActive RecordをやめてPropelを使う
フックによる拡張
➔フックポイントにコードを追加
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より