はじめてのCodeIgniter

13,903 views

Published on

2011/02/19開催のCodeIgniterカンファレンスの講演資料です。

Published in: Technology
2 Comments
10 Likes
Statistics
Notes
No Downloads
Views
Total views
13,903
On SlideShare
0
From Embeds
0
Number of Embeds
2,127
Actions
Shares
0
Downloads
64
Comments
2
Likes
10
Embeds 0
No embeds

No notes for slide

はじめてのCodeIgniter

  1. 1. はじめてのCodeIgniter CodeIgniter Con 2011, Tokyo Japan 2011/02/19 大田区産業プラザPiO 寺嶋祐也CodeIgniter and its logo are property of EllosLab inc
  2. 2. 上場企業で法務を やっていたはずが (中略)いつの間にやらプログラムを 書いていた!
  3. 3. おはようございます!法務系PHPerです。
  4. 4. 自己紹介氏名:寺嶋 祐也 / Yuya Terajima仕事:自営業Tw : @terakumaCI歴:1年8ヶ月特徴:CodeIgniterのVim辞書作ってる人
  5. 5. 内容・基礎編・CodeIgniterと他のFWの違い・実際の構築方法 ->スニペット管理ツール対象・初めてCodeIgniterを使う人・オリジナルのFWを使っている人・cakePHPやsymfonyを使っている人
  6. 6. 注意事項・記載するCodeIgniterとは、 CodeIgniter Reactorです・Ver.は2.0・ソースコードはgithubで公開中 -> https://github.com/e2esoundcom/ci-snippets
  7. 7. CodeIgniter基礎編
  8. 8. Q.CodeIgniterとは?・MVCフレームワーク・PHP 5.1.6・MySQL , Postgres, Oracle, SQLite, ODBC・EllisLab.inc + コミュニティにより開発 Core -> EllisLab.inc Reactor-> EllisLab.inc + コミュニティ +Reactor Engineers
  9. 9. 機能の追加はUser Voiceで
  10. 10. CodeIgniterの特徴(1)軽量・高速・最低限の構成ファイルをload・ライブラリのload方法も限定的対応可・合計2MB以下 ※ユーザーガイド等除く
  11. 11. CodeIgniterの特徴(2)高い拡張性・Coreも含めて拡張可・ライブラリ、ヘルパーも拡張可・コミュニティによる各種ライブラリ・多数紹介されるHack
  12. 12. CodeIgniterの特徴(3)低い学習コスト・学習のボリューム自体が低い・充実したユーザーガイド
  13. 13. 基本 クラスライブラリ ヘルパ
  14. 14. 2.0になって変わったこと・PHP4対応終了、PHP5.1.6以上へ・Scaffolding, Validation 削除・driver・CSRF保護機能の追加・キャッシュ機能強化(APC, memcache)・Bug Fix・各ライブラリにメソッド追加 …etc+ C と M の書き方が変わった
  15. 15. よくある質問1.他のフレームワークより凄いの?2.cakePHP/symfonyとCodeIgniterは 何が違うの?3.どんな規模の開発で使えるの?
  16. 16. CodeIgniterと他のFWの違い
  17. 17. CodeIgniterの特徴 ・軽量・高速 ・高い拡張性 ・低い学習コスト存在しない機能がある
  18. 18. ジェネレーター:自動生成機能 ツール自体がない 設定の記述が少ない 設置も簡単
  19. 19. Migration:DBバージョン管理 ありません。 もうちょっと待ちましょう
  20. 20. Modelの挙動symfonyの場合 引用元:Practical symfony 6日目データベースから、ORMと連携して、簡単にデータを取得できる機能
  21. 21. Modelの挙動CodeIgniterの場合 Modelは全部手書き
  22. 22. 但し、Hackはあります。 苦手なところも カバーができる拡張性!!
  23. 23. Viewの呼び出し:Layouts機能操作するコンテンツ以外の枠は1ファイルで管理呼出する機能
  24. 24. Viewの呼び出し CodeIgniterの場合 表示する度に個別に呼び出しview("header")view("contents")view("footer")
  25. 25. ※実はこれにもHackが 苦手なところも カバーができる拡張性!!
  26. 26. イメージRoR系 CodeIgniter
  27. 27. 個人的使い分け基準・Modelでどれだけのテーブルを扱うか・Hackでストレスなく対応できる範囲か基本的には…・小~中規模・APIを使う頻度が高いWebサービス
  28. 28. 使っている時の感想・アプリケーション全体の掌握感・気に入らなければ変えられる 容易な拡張性・スパゲティなコードと闘った後の 読み物としても重宝
  29. 29. スニペット管理ツールを作る - CI-SNIPPETS -
  30. 30. CI - SNIPPETS・スニペット管理ツール・SyntaxHighlighter・DBにデータを入れて引き出す程度・認証なし (デモ)
  31. 31. まずは、基本を押さえてみる
  32. 32. 基本:ディレクトリapplication/~ ・controllers ・models ・views ・helpers (自作の関数置くところ) ・libraries (自作のクラス置くところ)system/~は触れない
  33. 33. 基本:規約ControllerとModel共通のルール・ファイル名とクラス名は同一・クラス名の最初の1文字目は必ず大文字sample.php class Sample extends CI_Controller {}
  34. 34. 基本:Controller 基底のControllerを承継 初期化 ライブラリを呼出 ヘルパ呼出 アクションを定義
  35. 35. 基本:Model(1) 基底のModelを承継 初期化 メソッドを定義
  36. 36. 基本:Model(2)Controllerからの呼び出し方法 Modelファイル名 メソッドチェーンで使用
  37. 37. 基本:View(1) Viewファイル名 Controllerから配列で値を渡す
  38. 38. 基本:View(2)Controllerで渡した配列の中身 配列の添え字を変数として扱える
  39. 39. まとめ:覚えることライブラリ$this->load->library("name");ヘルパ$this->load->helper("name");View$this->load->view("file", $data);※値は配列で渡すModel +CとM$this->load->model("file"); のModelのメソッドを使う$this->model_name->function() フォーマット
  40. 40. インストール & 設定
  41. 41. ※今日のサンプルコードはgithubにありますhttps://github.com/e2esoundcom/ci-snippets
  42. 42. インストールhttps://bitbucket.org/codeigniter_jp/ci-ja/
  43. 43. 設定対象:4ファイル・application/config/config.php database.php・index.php・.htaccess
  44. 44. 設定:config.php・設置URL$config["base_url"] = "http://example.jp/"・URLプロトコル$config[uri_protocol] = "AUTO";・log$config[" log_threshold "] = 4・暗号化キー$config[encryption_key] = "(32文字乱数)"; + CSRF機能 $config[csrf_protection] = TRUE;
  45. 45. 設定:index.phpデフォルトでは…・$system_path = "system";・$application_folder = "application"; root/ applicasion/ ディレクトリを ドキュメントルート以外に system/ 設置する場合に変更 index.php
  46. 46. http://example.jp/にアクセス
  47. 47. 設定:database.php dbprefix => "sn_"
  48. 48. 少し話題を変えて URLの話
  49. 49. /index.php/controller/action/param index.phpカッコ悪い。
  50. 50. 設定:.htaccessewriteEngine onRewriteCond $1 !^(index¥.php|images|robots¥.txt)RewriteRule ^(.*)$ /index.php/$1 [L] root/ + config.phpを書換え applicasion/ $config[index_page] = ; system/ index.php .htaccess
  51. 51. 基本はこれだけ
  52. 52. 編集画面を作る・controller : edit.php・model : snippets_model.php・view : header.php footer.php + 個別のview
  53. 53. edit.php:~/edit ・設定ファイルから値の読込み ・viewの呼び出し
  54. 54. edit_view.php formヘルパ・CSRF保護機能を使う場合、必ずform_open() form_open()の度に、 hiddenフィールドを自動で
  55. 55. edit.php:~/edit/confirm form_validation・値の検証クラスライブラリ・ルールの記述はコンストラクタ or 設定ファイル $this->form_validation->run(); 成功ならTRUE, 失敗ならFALSE
  56. 56. ユーザー定義のルール・controllerに検証用の関数を用意 callback_function_name で検証ルールに指定
  57. 57. form_validationとset_value()の注意点・set_value()は、form_validationをrun()させないと値が取れない・set_value()で出力された値は、 htmlspecialchars()を通っている
  58. 58. Model
  59. 59. DBでデータを扱う方法大きく2つ・SQLを発行する方法・Active Recordを使う方法
  60. 60. SQL発行を補助するメソッド・insert_string()・update_string()テーブル名と配列を与えるとSQLを生成array("title" => $title, "code" => $code, "code_type" => $code_type );
  61. 61. 結果取得・オブジェクトで返す -> result(), row()・配列で返す -> result_array() , row_array()・何行返ったか -> num_rows() こんな機能も! ・クエリのキャッシュ ・結果セットからCSV生成 ・結果セットからXML生成
  62. 62. CodeIgniterの情報源・ユーザ会ML・ユーザ会フォーラム(準備中)・本家フォーラム・User Voice・Twitterの#codeigniter
  63. 63. Reactorになってから、 開発の速度が大幅にUP!さらなる機能の改善、 追加が見込まれています。
  64. 64. CodeIgniterでHappy Engineer Lifeを!!
  65. 65. ご清聴ありがとうございました。

×