SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
CakePHP入門
PHPでRailsライクな高速開発


                                                        PHP勉強会 第9回発表資料
                                                        2006年2月25日 安藤祐介
   Copyright © YusukeAndo. 2006. All rights reserved.
                                                                      1
はじめに


 巷で話題の“Ruby On Rails”
     Rubyで実装されたMVCフレームワーク
     同じ事を繰り返さない - Don’t Repeat Yourself
     設定よりも規約 - Convention over Configuration
     ActiveRecordによりコードを書かずにDB機能
     「高速」開発。(プロトタイプ、改修、運用)
                                               10分で作るRailsアプリ for Windows
→注目度が上昇中
                                                     などの試みが注目されたり・・・
Copyright © YusukeAndo. 2006. All rights reserved.                          2
そして

Ruby On RailsのPHP版とも言えるのが・・・




                                                         なのです


                                       (正確にはRailsライクなフレームワークの中の1つ)
Copyright © YusukeAndo. 2006. All rights reserved.               3
CakePHPの特徴


   フロントコントローラー、MVCモデル
   設定不要、サブディレクトリのみで動作可能
   アクティブレコード、組込みのCRUD
   PHP4、PHP5両対応


「あらゆるレベルのプログラマーにとって快適な環境を」
                                                     CakePHP development team

Copyright © YusukeAndo. 2006. All rights reserved.                              4
おおまかな構造

                                             アプリケーションのルート
                                             設定ファイル
                                             コントローラー
                                             モデル


                                             ビュー(テンプレート)

                                             フレームワークのライブラリ


→以上の構造で丸ごと設置する為、共用型サーバでも容易。
 Copyright © YusukeAndo. 2006. All rights reserved.          5
動作の手順




実際に動かしながら触ってみましょう!




Copyright © YusukeAndo. 2006. All rights reserved.   6
アーカイブの入手


   cakephp.orgからアーカイブを入手。




                                                     ここです。



Copyright © YusukeAndo. 2006. All rights reserved.           7
セットアップ


    展開して出来たディレクトリを任意にリネーム
    Apacheから見える所にがっつりと設置
    あとはindex.phpにアクセスすれば動作完了




※htaccessによるoverride、rewriteが出来るようにしておく
 Rewriteが使えない場合はcore.php内の設定を修正

 Copyright © YusukeAndo. 2006. All rights reserved.   8
画面イメージ



                                                     データベース設定が無い警告




Copyright © YusukeAndo. 2006. All rights reserved.                   9
データベース接続設定
  データベースへの接続設定を行う
  app/config/database.php に設定を記入
  ひな型をコピーすると簡単

var $default = array('driver'                => 'mysql',
                           'connect' => 'mysql_pconnect',
                           ‘host’       => ‘localhost’,     ホスト名
                           ‘login’      => ‘user’,        ユーザ名
                           ‘password’ => ‘password’,   パスワード
                           ‘database’ => ‘project_name’, DB名
                           'prefix'      => '');


Copyright © YusukeAndo. 2006. All rights reserved.                 10
画面イメージ



                                                     データベース接続成功




Copyright © YusukeAndo. 2006. All rights reserved.                11
テーブル作成
 データベースにアプリで利用するテーブルを作成
 一定のネーミングルールで作成(必須!)
ネーミングルール
 テーブル名は複数形英語 (books toys musics …)
 プライマリキーは“id”とする
 外部キーは“genre_id” “book_id” のように単数_id とする
 “created” “modified”というDATETIMEを作るとベター



Copyright © YusukeAndo. 2006. All rights reserved.   12
画面イメージ




                                                     コントローラーが無い




                                                     作るべきコード




Copyright © YusukeAndo. 2006. All rights reserved.                13
コントローラー作成
/books にアクセスするとコントローラーが見つからないエラーが・・・
   エラー画面で指示されたとおりにクラスを作成
 app/controllers/%name%_controller.php



 <?php
     class BooksController extends AppController
     {
     }
?>




Copyright © YusukeAndo. 2006. All rights reserved.   14
モデル作成
今度はモデルが見つからないらしい・・・
    AppModelの派生クラスを作成
    app/models/%name%.php

<?php
class book extends AppModel {


}
?>




Copyright © YusukeAndo. 2006. All rights reserved.   15
画面イメージ



                                                     メソッドが無い




Copyright © YusukeAndo. 2006. All rights reserved.             16
scaffoldの利用
メソッドが無いといわれたが・・・?
     現段階ではロジックを実装するindex() メソッド等が無い
     Railsにもあるアプリの「骨組み」を提供する機能
     コントローラーをscaffold指定すれば「骨組み」が利用可能
<?php
     class BooksController extends AppController
     {
         var $scaffold;
     }
?>

Copyright © YusukeAndo. 2006. All rights reserved.   17
動作確認
  組込みのCRUDが利用可能です
  Create Read Update Delete の機能
  マスタのメンテナンス程度であれば十分
  カラム追加などにも自動で追随する




Copyright © YusukeAndo. 2006. All rights reserved.   18
入力画面




                                                     カラムの型に応じた
                                                      入力欄を生成




Copyright © YusukeAndo. 2006. All rights reserved.               19
単票形式での表示




Copyright © YusukeAndo. 2006. All rights reserved.   20
カスタマイズ
  組込みのCRUDも便利は便利・・・
  でもユーザ向けの表示は細かい指定が必要
  コントローラーを修正し、テンプレートを作ればOK
  scaffoldとの共存もできる




Copyright © YusukeAndo. 2006. All rights reserved.   21
コントローラーの修正
     app/controllers/%name%_controller.phpにindexメソッド
     を追加する

<?php
     class BooksController extends AppController
     {
         var $scaffold;
         function index(){
             $this->set('data',$this->book->findAll());
         }
     }
?>


Copyright © YusukeAndo. 2006. All rights reserved.        22
テンプレートの作成
    app/views/%name%/index.thtml を作成
    Controllerでsetした名前でハッシュがある
<table>
<tr><th>書名</th><th>登録日</th></tr>
<?php foreach ($data as $row): ?>
<tr>
<td><?php echo $row['book']['title'];?></td>
<td><?php echo $row['book']['created'];?></td>
</tr>
<?php endforeach; ?>
</table>

 Copyright © YusukeAndo. 2006. All rights reserved.   23
カスタマイズの確認
  カスタマイズした表示ができました
  scaffoldの機能もURLを叩けば動く(リンクすれば良い)
  リレーションも使えます




Copyright © YusukeAndo. 2006. All rights reserved.   24
画面イメージ




                                                     モデルに2行程度の修正
                                                      で従属データも取得




Copyright © YusukeAndo. 2006. All rights reserved.                 25
まとめ
  メリット
  簡単セットアップ、スクリプト的な記述
  validate、セッション管理も組み込まれている
  デメリット
  情報が少ない、マルチバイト関連のノウハウ
  習得コストは無いとは言えない




Copyright © YusukeAndo. 2006. All rights reserved.   26
Let‘s Bake!

     CakePHPなかなか面白そうなフレームワークです。
     小回りが利きそうな開発でなら十分に威力を発揮
     するのではないでしょうか?
     皆さんも今日からBakerです!




Copyright © YusukeAndo. 2006. All rights reserved.   27
謝辞




 参考サイト
     10分で作るCakePHPアプリ for Windows
                                                     http://p4life.jp/cake/

Copyright © YusukeAndo. 2006. All rights reserved.                            28
質疑応答 




                 ご静聴ありがとうございました。




Copyright © YusukeAndo. 2006. All rights reserved.   29

Mais conteúdo relacionado

Mais procurados

Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門minazou67
 
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)Ryusaburo Tanaka
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようTasuku Otani
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみたTakeo Noda
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月suno88
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4leverages_event
 
JobSchedulerを使ったAsakusaのジョブ管理
JobSchedulerを使ったAsakusaのジョブ管理JobSchedulerを使ったAsakusaのジョブ管理
JobSchedulerを使ったAsakusaのジョブ管理OSSラボ株式会社
 
Eggplant Functional - Lesson 5 (Japanese slides)
Eggplant Functional - Lesson 5 (Japanese slides)Eggplant Functional - Lesson 5 (Japanese slides)
Eggplant Functional - Lesson 5 (Japanese slides)Eggplant
 
Java EEの話(仮)
Java EEの話(仮)Java EEの話(仮)
Java EEの話(仮)Satoshi Kubo
 
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」Soudai Sone
 
SOS JobScheduler Overview (Japanese)
SOS JobScheduler Overview (Japanese)SOS JobScheduler Overview (Japanese)
SOS JobScheduler Overview (Japanese)OSSラボ株式会社
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方Ryo Tomidokoro
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側賢 秋穂
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドTetsuji Hayashi
 
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~Atsushi Ono
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>LaravelハンズオンセミナーTatsuyoshi Mashiko
 

Mais procurados (20)

Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
JS7 JobScheduler プレビュー
JS7 JobScheduler プレビューJS7 JobScheduler プレビュー
JS7 JobScheduler プレビュー
 
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
 
Vue入門
Vue入門Vue入門
Vue入門
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
JobSchedulerを使ったAsakusaのジョブ管理
JobSchedulerを使ったAsakusaのジョブ管理JobSchedulerを使ったAsakusaのジョブ管理
JobSchedulerを使ったAsakusaのジョブ管理
 
Eggplant Functional - Lesson 5 (Japanese slides)
Eggplant Functional - Lesson 5 (Japanese slides)Eggplant Functional - Lesson 5 (Japanese slides)
Eggplant Functional - Lesson 5 (Japanese slides)
 
Fuelphp1.8を始めたい
Fuelphp1.8を始めたいFuelphp1.8を始めたい
Fuelphp1.8を始めたい
 
Java EEの話(仮)
Java EEの話(仮)Java EEの話(仮)
Java EEの話(仮)
 
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
 
SOS JobScheduler Overview (Japanese)
SOS JobScheduler Overview (Japanese)SOS JobScheduler Overview (Japanese)
SOS JobScheduler Overview (Japanese)
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
 
Osc2014
Osc2014Osc2014
Osc2014
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
 
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 

Semelhante a Cakephp

20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用文樹 高橋
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1hideaki honda
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02Yusuke Ando
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTeruo Kawasaki
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Taiji Miyabe
 
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要TomomitsuKusaba
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!Ryuji Egashira
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)masanori kataoka
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 

Semelhante a Cakephp (20)

20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Lithium Labo #1
Lithium Labo #1Lithium Labo #1
Lithium Labo #1
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
Spine入門
Spine入門Spine入門
Spine入門
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 

Mais de Yusuke Ando

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大Yusuke Ando
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版Yusuke Ando
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CIYusuke Ando
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストYusuke Ando
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Yusuke Ando
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Yusuke Ando
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Yusuke Ando
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツYusuke Ando
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションYusuke Ando
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行Yusuke Ando
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるYusuke Ando
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Yusuke Ando
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard CloudYusuke Ando
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めようYusuke Ando
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」Yusuke Ando
 

Mais de Yusuke Ando (20)

ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CITesting your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
 
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発
 
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突
 
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
 
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
 
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーションTravis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーション
 
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆けるShimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆ける
 
Dev opschef
Dev opschefDev opschef
Dev opschef
 
Paa s and oss
Paa s and ossPaa s and oss
Paa s and oss
 
New relic
New relicNew relic
New relic
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
 
Engine Yard Cloud
Engine Yard CloudEngine Yard Cloud
Engine Yard Cloud
 
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
 
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
 

Cakephp

  • 1. CakePHP入門 PHPでRailsライクな高速開発 PHP勉強会 第9回発表資料 2006年2月25日 安藤祐介 Copyright © YusukeAndo. 2006. All rights reserved. 1
  • 2. はじめに 巷で話題の“Ruby On Rails” Rubyで実装されたMVCフレームワーク 同じ事を繰り返さない - Don’t Repeat Yourself 設定よりも規約 - Convention over Configuration ActiveRecordによりコードを書かずにDB機能 「高速」開発。(プロトタイプ、改修、運用) 10分で作るRailsアプリ for Windows →注目度が上昇中 などの試みが注目されたり・・・ Copyright © YusukeAndo. 2006. All rights reserved. 2
  • 3. そして Ruby On RailsのPHP版とも言えるのが・・・ なのです (正確にはRailsライクなフレームワークの中の1つ) Copyright © YusukeAndo. 2006. All rights reserved. 3
  • 4. CakePHPの特徴 フロントコントローラー、MVCモデル 設定不要、サブディレクトリのみで動作可能 アクティブレコード、組込みのCRUD PHP4、PHP5両対応 「あらゆるレベルのプログラマーにとって快適な環境を」 CakePHP development team Copyright © YusukeAndo. 2006. All rights reserved. 4
  • 5. おおまかな構造 アプリケーションのルート 設定ファイル コントローラー モデル ビュー(テンプレート) フレームワークのライブラリ →以上の構造で丸ごと設置する為、共用型サーバでも容易。 Copyright © YusukeAndo. 2006. All rights reserved. 5
  • 7. アーカイブの入手 cakephp.orgからアーカイブを入手。 ここです。 Copyright © YusukeAndo. 2006. All rights reserved. 7
  • 8. セットアップ 展開して出来たディレクトリを任意にリネーム Apacheから見える所にがっつりと設置 あとはindex.phpにアクセスすれば動作完了 ※htaccessによるoverride、rewriteが出来るようにしておく  Rewriteが使えない場合はcore.php内の設定を修正 Copyright © YusukeAndo. 2006. All rights reserved. 8
  • 9. 画面イメージ データベース設定が無い警告 Copyright © YusukeAndo. 2006. All rights reserved. 9
  • 10. データベース接続設定 データベースへの接続設定を行う app/config/database.php に設定を記入 ひな型をコピーすると簡単 var $default = array('driver' => 'mysql', 'connect' => 'mysql_pconnect', ‘host’ => ‘localhost’,     ホスト名 ‘login’ => ‘user’,        ユーザ名 ‘password’ => ‘password’,   パスワード ‘database’ => ‘project_name’, DB名 'prefix' => ''); Copyright © YusukeAndo. 2006. All rights reserved. 10
  • 11. 画面イメージ データベース接続成功 Copyright © YusukeAndo. 2006. All rights reserved. 11
  • 12. テーブル作成 データベースにアプリで利用するテーブルを作成 一定のネーミングルールで作成(必須!) ネーミングルール テーブル名は複数形英語 (books toys musics …) プライマリキーは“id”とする 外部キーは“genre_id” “book_id” のように単数_id とする “created” “modified”というDATETIMEを作るとベター Copyright © YusukeAndo. 2006. All rights reserved. 12
  • 13. 画面イメージ コントローラーが無い 作るべきコード Copyright © YusukeAndo. 2006. All rights reserved. 13
  • 14. コントローラー作成 /books にアクセスするとコントローラーが見つからないエラーが・・・ エラー画面で指示されたとおりにクラスを作成  app/controllers/%name%_controller.php <?php class BooksController extends AppController { } ?> Copyright © YusukeAndo. 2006. All rights reserved. 14
  • 15. モデル作成 今度はモデルが見つからないらしい・・・ AppModelの派生クラスを作成 app/models/%name%.php <?php class book extends AppModel { } ?> Copyright © YusukeAndo. 2006. All rights reserved. 15
  • 16. 画面イメージ メソッドが無い Copyright © YusukeAndo. 2006. All rights reserved. 16
  • 17. scaffoldの利用 メソッドが無いといわれたが・・・? 現段階ではロジックを実装するindex() メソッド等が無い Railsにもあるアプリの「骨組み」を提供する機能 コントローラーをscaffold指定すれば「骨組み」が利用可能 <?php class BooksController extends AppController { var $scaffold; } ?> Copyright © YusukeAndo. 2006. All rights reserved. 17
  • 18. 動作確認 組込みのCRUDが利用可能です Create Read Update Delete の機能 マスタのメンテナンス程度であれば十分 カラム追加などにも自動で追随する Copyright © YusukeAndo. 2006. All rights reserved. 18
  • 19. 入力画面 カラムの型に応じた 入力欄を生成 Copyright © YusukeAndo. 2006. All rights reserved. 19
  • 20. 単票形式での表示 Copyright © YusukeAndo. 2006. All rights reserved. 20
  • 21. カスタマイズ 組込みのCRUDも便利は便利・・・ でもユーザ向けの表示は細かい指定が必要 コントローラーを修正し、テンプレートを作ればOK scaffoldとの共存もできる Copyright © YusukeAndo. 2006. All rights reserved. 21
  • 22. コントローラーの修正 app/controllers/%name%_controller.phpにindexメソッド を追加する <?php class BooksController extends AppController { var $scaffold; function index(){ $this->set('data',$this->book->findAll()); } } ?> Copyright © YusukeAndo. 2006. All rights reserved. 22
  • 23. テンプレートの作成 app/views/%name%/index.thtml を作成 Controllerでsetした名前でハッシュがある <table> <tr><th>書名</th><th>登録日</th></tr> <?php foreach ($data as $row): ?> <tr> <td><?php echo $row['book']['title'];?></td> <td><?php echo $row['book']['created'];?></td> </tr> <?php endforeach; ?> </table> Copyright © YusukeAndo. 2006. All rights reserved. 23
  • 24. カスタマイズの確認 カスタマイズした表示ができました scaffoldの機能もURLを叩けば動く(リンクすれば良い) リレーションも使えます Copyright © YusukeAndo. 2006. All rights reserved. 24
  • 25. 画面イメージ モデルに2行程度の修正 で従属データも取得 Copyright © YusukeAndo. 2006. All rights reserved. 25
  • 26. まとめ メリット   簡単セットアップ、スクリプト的な記述   validate、セッション管理も組み込まれている デメリット   情報が少ない、マルチバイト関連のノウハウ   習得コストは無いとは言えない Copyright © YusukeAndo. 2006. All rights reserved. 26
  • 27. Let‘s Bake! CakePHPなかなか面白そうなフレームワークです。 小回りが利きそうな開発でなら十分に威力を発揮 するのではないでしょうか? 皆さんも今日からBakerです! Copyright © YusukeAndo. 2006. All rights reserved. 27
  • 28. 謝辞 参考サイト 10分で作るCakePHPアプリ for Windows http://p4life.jp/cake/ Copyright © YusukeAndo. 2006. All rights reserved. 28
  • 29. 質疑応答  ご静聴ありがとうございました。 Copyright © YusukeAndo. 2006. All rights reserved. 29