Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

はじめてのCodeIgniter

14,402 views

Published on

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

Published in: Technology

はじめての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. ご清聴ありがとうございました。

×