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.
PHPとフレームワークいまさらCodeigniter         WEB TOUCH MEETING 53                    2013.01.19                     大林 正典
自己紹介•   大林 正典 / @moobay9 / インフラエンジニア•   20世紀からHTML/CSSは触ってましたがWEBを仕事    にしたのは2007年から•   2011年の秋まで東京の渋谷で働いてました•   わりと有名どころの...
お題•   PHP•   フレームワーク•   MVC•   Codeigniter
PHP
“Personal Home Page”
正式名称はPHP: Hypertext Preprocessor
HTMLの正式名称はHyperText Markup Language
つまりPHPは動的にHTMLデータを生成するために  生まれてきた言語なのです
   ∩___∩   | ノ  u   ヽ            動的の意味が  /  ●   ● |          | u  ( _●_)  ミ       わからないクマー… 彡、   |∪| u、`\ / __  ヽノ /´>  ) ...
こんなコードがあったとき       hoge.php <?php if ($_GET[prm] == 1) {     echo "hoge"; } else {     echo "uwaaa"; }
http://dummy/hoge.php?prm=1 画面に表示されるのは「hoge」http://dummy/hoge.php?prm=2画面に表示されるのは「uwaaa」
おなじhoge.phpにアクセスしてるのに  見た目が変わってますよね。  これが動的なデータ生成です。
フレームワークとは
ここでのフレームワークは厳密にいうとWEBアプリケーションフレームワーク
主なフレームワーク      名前          言語  Ruby on Rails   Ruby    CakePHP       PHP   Codeigniter    PHP Zend Framework   PHP    Symf...
よくある勘違い
「Smartyもフレームワークだよね?    なんで入ってないの?」
Smarty はテンプレートエンジンです。後述する View をつかさどる物であって決してフレームワークではありません。
フレームワーク何するものぞ?
簡単に表現するならば役立つ機能やよく使われる機能の    集合体です。
主な機能•   セキュリティ•   データベースアクセス•   セッション•   認証•   フォームのバリデーション(検証)•   etc...
「俺またこの機能を書いてるよ…」というような状況を無くすために フレームワークはあります。
フレームワークの利点•   誰がコードを書いても似たような作りになる    -   メンテナンス性アップ!    -   品質の均一化!•   同じ事を省いてくれるので作成時間の短縮    -   工数削減!
デメリットはあまりありませんが、強いてあげれば各フレームワークごとに  お作法がありますので要学習
MVC
Model-View-Controller
フレームワークの構造です大まかにこの三つからできてます
URLのアドレス                   入力   GETやPOSTのパラメータ                Controller        Model                Viewデータの取得・加工・生成     ...
よくあるパターン<?phprequire_once ./session.inc;   // セッションrequire_once ./database.inc; // DBの定義$param1 = $_POST["name"];$param2 =...
Codeigniter
PHPフレームワークのトレンド   世界で一番検索されている   PHPのフレームワークです
ベンチマーク           フレームワーク                      Requests per second           Symfony 2.1.6                        34.77    ...
インストールが簡単 /     /application/     解凍すると既にこの形       /cache/       /config/       /controllers/       /core/                ...
コード量が少ない              <?php              class Demo extends CI_Controller {                  public function index()Codeig...
その他の特徴•   おぼえる事が少ないので習得が短期間•   マニュアルが読みやすい•   機能は必要最低限•   日本で人気のCakePHPと比べて規約が超ゆるい•   足りない機能の拡張も簡単•   ActiveRecord
Codeigniterを触った後でZend Frameworkをやろうと思うと   泣けます。悪い意味で。
問題点•   オンラインの日本語マニュアルが最新版に更新さ    れてません(2.0.3止まり、最新版は2.1系)•   ライセンスがちょっと特殊なのでGPLが絡むとき    は気をつけてください
CodeigniterのURLhttp://example.com/index.php/hello/world/dummy •    hello: コントローラー •    world: メソッド •    dummy: パラメータ(省略可能)...
他クラスの読み込み          $this->load->ほにゃらら();// Helper$this->load->helper(url);echo prep_url(example.com);// Library$this->load...
ActiveRecord    簡単に言うとデータベースからデータを抜いてくる時に    SQLを直接書かないようにする仕組み<?phpclass Tekitou extends CI_Model {    function __constru...
ActiveRecord$query = $this->db->query(SELECT * FROM user);$query = $this->db->get(user);return $query->result_array();$que...
広島でもCodeigniterがもうちょっと     流行るといいなぁ…
質疑応答
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

WTM53 phpフレームワーク いまさらcodeigniter

4,532 views

Published on

Published in: Technology
  • Be the first to comment

WTM53 phpフレームワーク いまさらcodeigniter

  1. 1. PHPとフレームワークいまさらCodeigniter WEB TOUCH MEETING 53 2013.01.19 大林 正典
  2. 2. 自己紹介• 大林 正典 / @moobay9 / インフラエンジニア• 20世紀からHTML/CSSは触ってましたがWEBを仕事 にしたのは2007年から• 2011年の秋まで東京の渋谷で働いてました• わりと有名どころの会社のサイト構築・運用を経験• 時々プログラマー(PHPとシェルスクリプト)• 現在フリーです。猛烈に仕事募集中です
  3. 3. お題• PHP• フレームワーク• MVC• Codeigniter
  4. 4. PHP
  5. 5. “Personal Home Page”
  6. 6. 正式名称はPHP: Hypertext Preprocessor
  7. 7. HTMLの正式名称はHyperText Markup Language
  8. 8. つまりPHPは動的にHTMLデータを生成するために 生まれてきた言語なのです
  9. 9.    ∩___∩   | ノ  u   ヽ 動的の意味が  /  ●   ● |        | u  ( _●_)  ミ   わからないクマー… 彡、   |∪| u、`\ / __  ヽノ /´>  ) (___) u / (_/      |       /       |  /\ \       | /    )  ) ∪    (  \       \_)
  10. 10. こんなコードがあったとき hoge.php <?php if ($_GET[prm] == 1) { echo "hoge"; } else { echo "uwaaa"; }
  11. 11. http://dummy/hoge.php?prm=1 画面に表示されるのは「hoge」http://dummy/hoge.php?prm=2画面に表示されるのは「uwaaa」
  12. 12. おなじhoge.phpにアクセスしてるのに 見た目が変わってますよね。 これが動的なデータ生成です。
  13. 13. フレームワークとは
  14. 14. ここでのフレームワークは厳密にいうとWEBアプリケーションフレームワーク
  15. 15. 主なフレームワーク 名前 言語 Ruby on Rails Ruby CakePHP PHP Codeigniter PHP Zend Framework PHP Symfony PHP Catalyst Perl Struts Java
  16. 16. よくある勘違い
  17. 17. 「Smartyもフレームワークだよね? なんで入ってないの?」
  18. 18. Smarty はテンプレートエンジンです。後述する View をつかさどる物であって決してフレームワークではありません。
  19. 19. フレームワーク何するものぞ?
  20. 20. 簡単に表現するならば役立つ機能やよく使われる機能の 集合体です。
  21. 21. 主な機能• セキュリティ• データベースアクセス• セッション• 認証• フォームのバリデーション(検証)• etc...
  22. 22. 「俺またこの機能を書いてるよ…」というような状況を無くすために フレームワークはあります。
  23. 23. フレームワークの利点• 誰がコードを書いても似たような作りになる - メンテナンス性アップ! - 品質の均一化!• 同じ事を省いてくれるので作成時間の短縮 - 工数削減!
  24. 24. デメリットはあまりありませんが、強いてあげれば各フレームワークごとに お作法がありますので要学習
  25. 25. MVC
  26. 26. Model-View-Controller
  27. 27. フレームワークの構造です大まかにこの三つからできてます
  28. 28. URLのアドレス 入力 GETやPOSTのパラメータ Controller Model Viewデータの取得・加工・生成 出力データベースへのアクセス HTMLをブラウザへパスワード用ランダム文字列の生成 メールマガジン登録者へメール受け取ったPOST値の加工
  29. 29. よくあるパターン<?phprequire_once ./session.inc; // セッションrequire_once ./database.inc; // DBの定義$param1 = $_POST["name"];$param2 = $_POST["old"]; コントローラーでやるところ// 入力チェック// DBからデータを取得 モデルでやるところ?><html> <?php ビューのデータ // DBから取得したデータを適当に展開 foreach($result as $item) : ?> <div> <p><?php echo $item["hogehoge"]; ?></p> </div> <?php endforeach; ?></html>
  30. 30. Codeigniter
  31. 31. PHPフレームワークのトレンド 世界で一番検索されている PHPのフレームワークです
  32. 32. ベンチマーク フレームワーク Requests per second Symfony 2.1.6 34.77 CakePHP 2.2.5 63.05 Codeigniter 2.1.3 182.03 $ ab -c 10 -t 60 <URL> Symfony CakePHP CodeigniterRPS 0 50 100 150 200
  33. 33. インストールが簡単 / /application/ 解凍すると既にこの形 /cache/ /config/ /controllers/ /core/ コントローラー /errors/ /helpers/ /hooks/ /language/ /libraries/ /logs/ /models/ モデル / third_party/ /views/ ビュー /system/ index.php
  34. 34. コード量が少ない <?php class Demo extends CI_Controller { public function index()Codeigniter { $this->load->view(demo); } } <?php App::uses(AppController, Controller); class DemoController extends AppController { public $name = Demo; CakePHP public $uses = array(); public function index() { $this->layout = null; $this->render(); } }
  35. 35. その他の特徴• おぼえる事が少ないので習得が短期間• マニュアルが読みやすい• 機能は必要最低限• 日本で人気のCakePHPと比べて規約が超ゆるい• 足りない機能の拡張も簡単• ActiveRecord
  36. 36. Codeigniterを触った後でZend Frameworkをやろうと思うと 泣けます。悪い意味で。
  37. 37. 問題点• オンラインの日本語マニュアルが最新版に更新さ れてません(2.0.3止まり、最新版は2.1系)• ライセンスがちょっと特殊なのでGPLが絡むとき は気をつけてください
  38. 38. CodeigniterのURLhttp://example.com/index.php/hello/world/dummy • hello: コントローラー • world: メソッド • dummy: パラメータ(省略可能) <?php class Hello extends CI_Controller { public function world($dummy) { $this->load->view(hw, array(prm=>$dummy)); } }
  39. 39. 他クラスの読み込み $this->load->ほにゃらら();// Helper$this->load->helper(url);echo prep_url(example.com);// Library$this->load->library(session);$this->session->set_userdata(AAA, BBB)// Model$this->load->model(hoge);$this->hoge->get();// View$this->load->view(hw);
  40. 40. ActiveRecord 簡単に言うとデータベースからデータを抜いてくる時に SQLを直接書かないようにする仕組み<?phpclass Tekitou extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); } SQLを書いてない public function get($uid) { $query = $this->db->get_where(user, array(id => $uid)); return $query->result_array(); }}
  41. 41. ActiveRecord$query = $this->db->query(SELECT * FROM user);$query = $this->db->get(user);return $query->result_array();$query = $this->db->where(id, $uid)->get(user);$query = $this->db->get_where(user, array(id => $uid));$query = $this->db->query(SELECT * FROM user WHERE id = ?, array($uid));return $query->result_array();
  42. 42. 広島でもCodeigniterがもうちょっと 流行るといいなぁ…
  43. 43. 質疑応答
  44. 44. ご清聴ありがとうございました

×