SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
CodeIgniterによるPhwittr
                                         日本CodeIgniterユーザ会
                                            Kenji Suzuki

                                                 2008/10/08
CodeIgniter and its logo are property of EllisLab Inc         CodeIgniter Users Group in Japan
Phwittrとは?


         Tritterクローン
            ➔ミニブログ
            ➔「ひとこと」を投稿するサイト
         「PHP Framework Fight!」という企画もの




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Phwittrとは?




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
PHP Framework Fight!とは?


         開催概要
            ➔ PHPで色々あるフレームワークで、同じ仕様のア
              プリを実装し、ベンチマークを取り競争する。
            ➔ 処理速度だけでなく、開発工数(ジェネレータが
              吐いた以外のコード量)などでも比較したい。
            ➔ 数あるPHPフレームワークの頂点に立つのはど
              のれか、今ここにPHPフレームワークの熱いバト
              ルが始まる!
         まとめサイト
            ➔ http://labs.strk.jp/code-fight/wiki/


CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
PHP Framework Fight!とは?


         経過
            ➔ 4/22告知、5月末までに実装の予定
            ➔ 仕様がなかなか出てこない
            ➔ 出てきたが、細かいところまではない
            ➔ 企画自体、ポシャった?

                 • PHP界隈では、この話題はタブーに
            ➔ 8/18に突然、締切日が9月末に設定される
            ➔ 実装しはじめると、HTMLテンプレートすら足りない
            ➔ Twitterや先に動いていたSabelを参考に
              テキトーに作る

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
PHP Framework Fight!とは?


         現状
            ➔ エントリー

                 •     14フレームワーク

                 • 17エントリ(バージョン違いなど)
            ➔ 一応できてるもの

                 •     Sabel

                 • CodeIgniter
                 • 素のPHP(独自フレームワーク)

                 • Piece

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
ビューの実装




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
ビューの実装

     layoutビュー(system/applications/views/layout.php)
     ...略...
     <body id="yourDomainName" class="indexBody">
     <div id="page">
         <div id="header"><?=$header?></div>
         <div id="contents">
             <div id="wrapper">
                 <div id="main"><?=$main?></div>
             </div>
             <div id="sub"><?=$sub?></div>
         </div>
         <div id="footer">...略...</div>
     </div>
     </body>
     ...略...
CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
ビューの実装

homeコントローラ(system/applications/controllers/home.php)
...略...
$data->header = $this->load->view('home/header', '', TRUE);
$data->main = $this->load->view('home/main', $data, TRUE);
$data->sub   = $this->load->view('home/side', $data, TRUE);
$this->load->view('layout', $data);
...略...




 CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
認証の実装


         Redux Auth 1.4a
            ➔GPL or MIT License
            ➔ http://code.google.com/p/reduxauth/

         (参考)Neo base
            ➔http://neo-navi.net/top/neo_base
            ➔デモ http://neo-navi.net/neo_base/




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
JavaScriptの出力


         JavaScriptファイルを出力するコントローラ
            ➔viewファイルにJavaScriptを書けば、
             CIのヘルパーなどが使える
            ➔ブラウザにキャッシュされるように
             ヘッダ出力
         <script>タグを生成するヘルパー
            ➔ファイルが更新されたときのために
             「?YYYYMMDDHHSS」を付加



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
JavaScriptの出力


         viewとして処理したい場合
            ➔ <?=js('default')?>
                 •     <script type="text/javascript"
                       src="http://example.jp/phwittr/js/default.js?
                       200810021129"></script>

         ファイルをそのまま出力したい場合
            ➔ <?=js('jquery-1.2.6.min.js', FALSE)?>
                 •     <script type="text/javascript"
                       src="http://example.jp/phwittr/js/jquery-1.2.6.min.j
                       s"></script>




CodeIgniter and its logo are property of EllisLab Inc        CodeIgniter Users Group in Japan
JavaScriptの出力


         URIルーティング
            ➔ application/config/routes.php
                 •     $route['js/(S+)'] = "js/index/$1";




CodeIgniter and its logo are property of EllisLab Inc        CodeIgniter Users Group in Japan
Ajaxの実装


         「つぶやき」の投稿
            ➔jQueryを使用
            ➔$.post()メソッドでPOST
                 •     $.post(URL, データ, コールバック関数, データタイプ);

            ➔受信用コントローラstatus/update()

                 •     データを受信して検証し、保存

                 • 結果をjsonで返す
            ➔ページを部分的に更新

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Ajaxの実装

viewファイル(system/applications/views/home/main.php)
<form action="#" name="whatdoing">
<div id="post">
<span class="whatdoing">イマナニシテル?</span>
<span class="textCount" id="js_textcount">140</span>
<textarea id="message" class="message"></textarea>
<p class="btn btnSpace">
<input type="button" name="twitter" id="twitter"
 class="formBtn" value=" つぶやく " />
<input type="hidden" id="ticket" value="<?=$ticket?>" />
<input type="hidden" id="page_" value="<?=PAGE_OTHER?>" />
</p>
</div>
</form>



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Ajaxの実装

      JavaScriptファイル(system/applications/views/js/default.php)
      /* つぶやきの投稿 */
      $(function(){
          $('#twitter').click(function(){
               comment = $('#message').val();
               $.post('<?=site_url('status/update')?>',
                        {msg: comment,
                        ticket: $('#ticket').val(),
                        p: $('#page_').val()},
                        addComment, 'json');
               $('#message').val('').focus();
               $("#js_textcount").text(140);
          });
      });



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Ajaxの実装

   controllerファイル(system/applications/controllers/status.php)
   // Ajax つぶやき投稿の受信(一部省略されていますので、このままでは動作しません)
   function update()
   {
          header('Content-Type: application/json; charset=UTF-8');
          $ticket = $this->session->flashdata('ticket');
          if ( ! $this->input->post('ticket') || $this->input->post('ticket') !== $ticket) {
                  echo json_encode(array('status' => 'ng', 'html' => 'チケットが異なります'));
                  exit;
          }

             $comment = $this->input->post('msg');
             $page = $this->input->post('p');

             if ($this->redux_auth->logged_in()) {
                    $this->load->model('Status_model', '', TRUE);
                    list($id, $reply_username) = $this->Status_model->
                            add_comment($user_id, $reply_username, $comment);
                    $html = $this->load->view('status/comment', $data, TRUE);
                    echo json_encode(array('status' => 'ok', 'html' => $html));
             }
             else {
                    echo json_encode(array('status' => 'ng',
                                                'html' => 'ログインしていません'));
             }
   }

CodeIgniter and its logo are property of EllisLab Inc                  CodeIgniter Users Group in Japan
Ajaxの実装

JavaScriptファイル(system/applications/views/js/default.php)
function addComment(data){
    if (data.status == 'ok') {
         $('tbody:first').prepend(data.html);
         $('p#last_comment').text(comment);
         count = parseInt($('#side_count_post').text()) + 1;
         $('#side_count_post').text(count);
    }
    else {
         alert(data.html);
    }
}




 CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
140文字カウントの実装

    JavaScriptファイル(system/applications/views/js/default.php)
    /* エラーメッセージ */
    $("#message").before('<p class="errorMsg">140字を超えました!</p>');
    $(".errorMsg").css({display:"none"});

    $("#message").bind("keyup blur submit",
    function(){
           if( $("#message").val().length > 140){
                   $("#js_textcount").text(140 - $("#message").val().length).css(
                   "color", "#FF0000");
                   $(".errorMsg").css({display: "block"});
                   $("#twitter").attr("disabled","disabed");
           }
           else {
                   $("#js_textcount").text(140 - $("#message").val().length ).css(
                   "color", "#CCCCCC");
                   if($("#message").val().length >= 1 && $("#message").val().length != ''){
                          $("#twitter").attr("disabled","");
                   }
                   else {
                          $("#twitter").attr("disabled","disabled");
                   }
                   $(".errorMsg").css({display:"none"});
           }
    }
    );


CodeIgniter and its logo are property of EllisLab Inc                 CodeIgniter Users Group in Japan
ヘルパーの作成


         pagerヘルパー
            ➔offset()、pager()
         アイコン画像表示のHTML生成
            ➔picture()、my_pict()
         投稿日時表示
            ➔posted_time()
         HTMLエスケープ
            ➔h()

CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Pagerヘルパー


         なにもの?
            ➔ページを移動する
            ➔home?page=2
            ➔「前へ」「後へ」移動
         CIにはPaginationクラスがあるのに
            ➔Paginationクラスより低機能
            ➔GETを使っている



CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
Pagerヘルパー


         GETの使い方
            ➔ $config['uri_protocol']をPATH_INFOに設定する
            ➔ 必要な時にQUERY_STRINGをパース
            ➔ むろん、CIでは推奨されない方法!!

                 •     セキュリティに自信のある人だけ使ってください

 $this->load->helper('pager');

 parse_str($_SERVER['QUERY_STRING'], $_GET);
 $page = intval($this->input->get('page'));
 $per_page = 20;
 $offset = offset($page, $per_page);

 $data->pager = pager($page, $per_page, $count, 'home');
CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
参考URL

         Phwittrソースコード
            ➔ CodeRepos
                 •     http://coderepos.org/share/browser/events/phpfra
                       mework/codeigniter/trunk

                 •     http://svn.coderepos.org/share/events/phpframew
                       ork/codeigniter/trunk

         テストサイト
            ➔ http://club.h14m.org:8000/kenji/phwittr/

         Framework Fightまとめサイト
            ➔ http://labs.strk.jp/code-fight/wiki/



CodeIgniter and its logo are property of EllisLab Inc     CodeIgniter Users Group in Japan
日本CodeIgniterユーザ会


         http://codeigniter.jp/

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

         メンバー募集中




CodeIgniter and its logo are property of EllisLab Inc   CodeIgniter Users Group in Japan
書籍のお知らせ


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

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

                                             http://codeigniter.jp/tettei/



                             Amazon.co.jpより             ご静聴
                                                        ありがとうございました
CodeIgniter and its logo are property of EllisLab Inc         CodeIgniter Users Group in Japan

Mais conteúdo relacionado

Mais procurados

⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMiho Nakano
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Sessionregret raym
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014Takashi Yahata
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
はじめよう JavaFX 2.x
はじめよう JavaFX 2.xはじめよう JavaFX 2.x
はじめよう JavaFX 2.xa know
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDCNobuhiro Sue
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
 
Robot_framework_introduction-ja
Robot_framework_introduction-jaRobot_framework_introduction-ja
Robot_framework_introduction-jaKazumasa EBATA
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget apiTakami Kazuya
 

Mais procurados (13)

⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Session
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
はじめよう JavaFX 2.x
はじめよう JavaFX 2.xはじめよう JavaFX 2.x
はじめよう JavaFX 2.x
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
Robot_framework_introduction-ja
Robot_framework_introduction-jaRobot_framework_introduction-ja
Robot_framework_introduction-ja
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget api
 

Destaque

Как стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критбиКак стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критбиAlexander Verhozin
 
Fresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentationFresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentationfbtslides
 
Seguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloudSeguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloudNextel S.A.
 
Jak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnejJak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnejpcmp
 
Kaal flex property
Kaal flex propertyKaal flex property
Kaal flex propertykaalflex
 
Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?Morten Munk
 
Human Rights and Exploring Global Citizenship
Human Rights and Exploring Global CitizenshipHuman Rights and Exploring Global Citizenship
Human Rights and Exploring Global Citizenshipyouth_upf
 
Microsoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th AugustMicrosoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th Augustvrushalis
 
Caso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacionCaso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacionInnovacionSistematica
 
Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8nizetanaiz
 
Youth nited for juan healthy nation
Youth nited for juan healthy nationYouth nited for juan healthy nation
Youth nited for juan healthy nationBernard Cielo
 
Resum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera PartResum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera PartOliverasqv
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2kenjis
 
Linguagem sql
Linguagem sqlLinguagem sql
Linguagem sqlTic Eslc
 
Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall fbtslides
 
Spectrum deck v5.3
Spectrum deck v5.3Spectrum deck v5.3
Spectrum deck v5.3SLaM Iam
 
Ukraine - Business unplugged!
Ukraine - Business unplugged!Ukraine - Business unplugged!
Ukraine - Business unplugged!Morten Munk
 
Presentacion motivafit startup live alicante
Presentacion motivafit startup live alicantePresentacion motivafit startup live alicante
Presentacion motivafit startup live alicanteNadia Calatayud
 
Resum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona PartResum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona PartOliverasqv
 

Destaque (20)

Как стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критбиКак стать резидентом КРИТБИ? критби
Как стать резидентом КРИТБИ? критби
 
Fresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentationFresh Business Thinking - Social Media Event - Jemima presentation
Fresh Business Thinking - Social Media Event - Jemima presentation
 
Seguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloudSeguridad: sembrando confianza en el cloud
Seguridad: sembrando confianza en el cloud
 
Jak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnejJak przygotowac startup do fazy inwestycyjnej
Jak przygotowac startup do fazy inwestycyjnej
 
Kaal flex property
Kaal flex propertyKaal flex property
Kaal flex property
 
Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?Is Ukraine on the road towards EU?
Is Ukraine on the road towards EU?
 
Human Rights and Exploring Global Citizenship
Human Rights and Exploring Global CitizenshipHuman Rights and Exploring Global Citizenship
Human Rights and Exploring Global Citizenship
 
ballorig
ballorigballorig
ballorig
 
Microsoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th AugustMicrosoft Project workshop in Pune 6th & 7th August
Microsoft Project workshop in Pune 6th & 7th August
 
Caso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacionCaso catenaria aprendiendo a innovar en la organizacion
Caso catenaria aprendiendo a innovar en la organizacion
 
Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8Linkedin presentation-red-1225231144081339-8
Linkedin presentation-red-1225231144081339-8
 
Youth nited for juan healthy nation
Youth nited for juan healthy nationYouth nited for juan healthy nation
Youth nited for juan healthy nation
 
Resum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera PartResum Curs 2011 - 2012. Tercera Part
Resum Curs 2011 - 2012. Tercera Part
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2
 
Linguagem sql
Linguagem sqlLinguagem sql
Linguagem sql
 
Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall Fresh Business Thinking Social Media Event - Julie Hall
Fresh Business Thinking Social Media Event - Julie Hall
 
Spectrum deck v5.3
Spectrum deck v5.3Spectrum deck v5.3
Spectrum deck v5.3
 
Ukraine - Business unplugged!
Ukraine - Business unplugged!Ukraine - Business unplugged!
Ukraine - Business unplugged!
 
Presentacion motivafit startup live alicante
Presentacion motivafit startup live alicantePresentacion motivafit startup live alicante
Presentacion motivafit startup live alicante
 
Resum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona PartResum Curs 2011 - 2012. Segona Part
Resum Curs 2011 - 2012. Segona Part
 

Semelhante a CodeIgniterによるPhwittr

CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワークCodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワークkenjis
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Kazunari Hara
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 

Semelhante a CodeIgniterによるPhwittr (20)

CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワークCodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 

Mais de kenjis

AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークkenjis
 
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイントkenjis
 
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoyakenjis
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoyakenjis
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成kenjis
 
達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しようkenjis
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード kenjis
 
CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)kenjis
 
CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!kenjis
 
はじめてのMercurial/Bitbucket
はじめてのMercurial/BitbucketはじめてのMercurial/Bitbucket
はじめてのMercurial/Bitbucketkenjis
 
CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010kenjis
 
『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのことkenjis
 
CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?kenjis
 

Mais de kenjis (15)

AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
 
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
 
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成
 
達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
 
CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)CodeIgniter 最新情報 2011 (増補版)
CodeIgniter 最新情報 2011 (増補版)
 
CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!CodeIgniterユーザガイドの翻訳に参加しよう!
CodeIgniterユーザガイドの翻訳に参加しよう!
 
はじめてのMercurial/Bitbucket
はじめてのMercurial/BitbucketはじめてのMercurial/Bitbucket
はじめてのMercurial/Bitbucket
 
CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010CodeIgniter 最新情報 2010
CodeIgniter 最新情報 2010
 
『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと『PHP逆引きレシピ』とセキュリティのこと
『PHP逆引きレシピ』とセキュリティのこと
 
CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?CodeIgniter 貴方はどのフレームワークを使うべきか?
CodeIgniter 貴方はどのフレームワークを使うべきか?
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

CodeIgniterによるPhwittr

  • 1. CodeIgniterによるPhwittr 日本CodeIgniterユーザ会 Kenji Suzuki 2008/10/08 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 2. Phwittrとは?  Tritterクローン ➔ミニブログ ➔「ひとこと」を投稿するサイト  「PHP Framework Fight!」という企画もの CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 3. Phwittrとは? CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 4. PHP Framework Fight!とは?  開催概要 ➔ PHPで色々あるフレームワークで、同じ仕様のア プリを実装し、ベンチマークを取り競争する。 ➔ 処理速度だけでなく、開発工数(ジェネレータが 吐いた以外のコード量)などでも比較したい。 ➔ 数あるPHPフレームワークの頂点に立つのはど のれか、今ここにPHPフレームワークの熱いバト ルが始まる!  まとめサイト ➔ http://labs.strk.jp/code-fight/wiki/ CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 5. PHP Framework Fight!とは?  経過 ➔ 4/22告知、5月末までに実装の予定 ➔ 仕様がなかなか出てこない ➔ 出てきたが、細かいところまではない ➔ 企画自体、ポシャった? • PHP界隈では、この話題はタブーに ➔ 8/18に突然、締切日が9月末に設定される ➔ 実装しはじめると、HTMLテンプレートすら足りない ➔ Twitterや先に動いていたSabelを参考に テキトーに作る CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 6. PHP Framework Fight!とは?  現状 ➔ エントリー • 14フレームワーク • 17エントリ(バージョン違いなど) ➔ 一応できてるもの • Sabel • CodeIgniter • 素のPHP(独自フレームワーク) • Piece CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 7. ビューの実装 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 8. ビューの実装 layoutビュー(system/applications/views/layout.php) ...略... <body id="yourDomainName" class="indexBody"> <div id="page"> <div id="header"><?=$header?></div> <div id="contents"> <div id="wrapper"> <div id="main"><?=$main?></div> </div> <div id="sub"><?=$sub?></div> </div> <div id="footer">...略...</div> </div> </body> ...略... CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 9. ビューの実装 homeコントローラ(system/applications/controllers/home.php) ...略... $data->header = $this->load->view('home/header', '', TRUE); $data->main = $this->load->view('home/main', $data, TRUE); $data->sub = $this->load->view('home/side', $data, TRUE); $this->load->view('layout', $data); ...略... CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 10. 認証の実装  Redux Auth 1.4a ➔GPL or MIT License ➔ http://code.google.com/p/reduxauth/  (参考)Neo base ➔http://neo-navi.net/top/neo_base ➔デモ http://neo-navi.net/neo_base/ CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 11. JavaScriptの出力  JavaScriptファイルを出力するコントローラ ➔viewファイルにJavaScriptを書けば、 CIのヘルパーなどが使える ➔ブラウザにキャッシュされるように ヘッダ出力  <script>タグを生成するヘルパー ➔ファイルが更新されたときのために 「?YYYYMMDDHHSS」を付加 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 12. JavaScriptの出力  viewとして処理したい場合 ➔ <?=js('default')?> • <script type="text/javascript" src="http://example.jp/phwittr/js/default.js? 200810021129"></script>  ファイルをそのまま出力したい場合 ➔ <?=js('jquery-1.2.6.min.js', FALSE)?> • <script type="text/javascript" src="http://example.jp/phwittr/js/jquery-1.2.6.min.j s"></script> CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 13. JavaScriptの出力  URIルーティング ➔ application/config/routes.php • $route['js/(S+)'] = "js/index/$1"; CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 14. Ajaxの実装  「つぶやき」の投稿 ➔jQueryを使用 ➔$.post()メソッドでPOST • $.post(URL, データ, コールバック関数, データタイプ); ➔受信用コントローラstatus/update() • データを受信して検証し、保存 • 結果をjsonで返す ➔ページを部分的に更新 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 15. Ajaxの実装 viewファイル(system/applications/views/home/main.php) <form action="#" name="whatdoing"> <div id="post"> <span class="whatdoing">イマナニシテル?</span> <span class="textCount" id="js_textcount">140</span> <textarea id="message" class="message"></textarea> <p class="btn btnSpace"> <input type="button" name="twitter" id="twitter" class="formBtn" value=" つぶやく " /> <input type="hidden" id="ticket" value="<?=$ticket?>" /> <input type="hidden" id="page_" value="<?=PAGE_OTHER?>" /> </p> </div> </form> CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 16. Ajaxの実装 JavaScriptファイル(system/applications/views/js/default.php) /* つぶやきの投稿 */ $(function(){ $('#twitter').click(function(){ comment = $('#message').val(); $.post('<?=site_url('status/update')?>', {msg: comment, ticket: $('#ticket').val(), p: $('#page_').val()}, addComment, 'json'); $('#message').val('').focus(); $("#js_textcount").text(140); }); }); CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 17. Ajaxの実装 controllerファイル(system/applications/controllers/status.php) // Ajax つぶやき投稿の受信(一部省略されていますので、このままでは動作しません) function update() { header('Content-Type: application/json; charset=UTF-8'); $ticket = $this->session->flashdata('ticket'); if ( ! $this->input->post('ticket') || $this->input->post('ticket') !== $ticket) { echo json_encode(array('status' => 'ng', 'html' => 'チケットが異なります')); exit; } $comment = $this->input->post('msg'); $page = $this->input->post('p'); if ($this->redux_auth->logged_in()) { $this->load->model('Status_model', '', TRUE); list($id, $reply_username) = $this->Status_model-> add_comment($user_id, $reply_username, $comment); $html = $this->load->view('status/comment', $data, TRUE); echo json_encode(array('status' => 'ok', 'html' => $html)); } else { echo json_encode(array('status' => 'ng', 'html' => 'ログインしていません')); } } CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 18. Ajaxの実装 JavaScriptファイル(system/applications/views/js/default.php) function addComment(data){ if (data.status == 'ok') { $('tbody:first').prepend(data.html); $('p#last_comment').text(comment); count = parseInt($('#side_count_post').text()) + 1; $('#side_count_post').text(count); } else { alert(data.html); } } CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 19. 140文字カウントの実装 JavaScriptファイル(system/applications/views/js/default.php) /* エラーメッセージ */ $("#message").before('<p class="errorMsg">140字を超えました!</p>'); $(".errorMsg").css({display:"none"}); $("#message").bind("keyup blur submit", function(){ if( $("#message").val().length > 140){ $("#js_textcount").text(140 - $("#message").val().length).css( "color", "#FF0000"); $(".errorMsg").css({display: "block"}); $("#twitter").attr("disabled","disabed"); } else { $("#js_textcount").text(140 - $("#message").val().length ).css( "color", "#CCCCCC"); if($("#message").val().length >= 1 && $("#message").val().length != ''){ $("#twitter").attr("disabled",""); } else { $("#twitter").attr("disabled","disabled"); } $(".errorMsg").css({display:"none"}); } } ); CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 20. ヘルパーの作成  pagerヘルパー ➔offset()、pager()  アイコン画像表示のHTML生成 ➔picture()、my_pict()  投稿日時表示 ➔posted_time()  HTMLエスケープ ➔h() CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 21. Pagerヘルパー  なにもの? ➔ページを移動する ➔home?page=2 ➔「前へ」「後へ」移動  CIにはPaginationクラスがあるのに ➔Paginationクラスより低機能 ➔GETを使っている CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 22. Pagerヘルパー  GETの使い方 ➔ $config['uri_protocol']をPATH_INFOに設定する ➔ 必要な時にQUERY_STRINGをパース ➔ むろん、CIでは推奨されない方法!! • セキュリティに自信のある人だけ使ってください $this->load->helper('pager'); parse_str($_SERVER['QUERY_STRING'], $_GET); $page = intval($this->input->get('page')); $per_page = 20; $offset = offset($page, $per_page); $data->pager = pager($page, $per_page, $count, 'home'); CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 23. 参考URL  Phwittrソースコード ➔ CodeRepos • http://coderepos.org/share/browser/events/phpfra mework/codeigniter/trunk • http://svn.coderepos.org/share/events/phpframew ork/codeigniter/trunk  テストサイト ➔ http://club.h14m.org:8000/kenji/phwittr/  Framework Fightまとめサイト ➔ http://labs.strk.jp/code-fight/wiki/ CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 24. 日本CodeIgniterユーザ会  http://codeigniter.jp/  CodeIgniter日本語言語パック/ 日本語ユーザガイド作成中  メンバー募集中 CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan
  • 25. 書籍のお知らせ  日本初のCodeIgniter解説本 『CodeIgniter徹底入門』  2008年6月9日、 翔泳社より発売されました  http://codeigniter.jp/tettei/ Amazon.co.jpより ご静聴 ありがとうございました CodeIgniter and its logo are property of EllisLab Inc CodeIgniter Users Group in Japan