Enviar pesquisa
Carregar
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
•
15 gostaram
•
4,639 visualizações
Yusuke Ando
Seguir
PHPカンファレンス北海道でのワークショップの資料です。
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 93
Baixar agora
Baixar para ler offline
Recomendados
PHP classの教室
PHP classの教室
Yusuke Ando
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
Yusuke Ando
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
PHP Object Injection入門
PHP Object Injection入門
Yu Iwama
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
swooleを試してみた
swooleを試してみた
Yukihiro Katsumi
Recomendados
PHP classの教室
PHP classの教室
Yusuke Ando
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
Yusuke Ando
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
PHP Object Injection入門
PHP Object Injection入門
Yu Iwama
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
swooleを試してみた
swooleを試してみた
Yukihiro Katsumi
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
Satoshi Suzuki
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
norry_gogo
Try Jetpack
Try Jetpack
Hideaki Miyake
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
Yuki Okamoto
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
Hishikawa Takuro
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!デベロッパーネットワーク
Django boodoo
Django boodoo
泰 増田
Ci tutorial
Ci tutorial
Kazuaki Ueda
traitを使って楽したい話
traitを使って楽したい話
infinite_loop
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
Takaaki Hirano
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
azuma satoshi
あらためてPHP5.3
あらためてPHP5.3
Masashi Shinbara
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
test
test
a1yama1123
Cakephp api
Cakephp api
Eiji Yokota
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
Mais conteúdo relacionado
Mais procurados
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
Satoshi Suzuki
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
norry_gogo
Try Jetpack
Try Jetpack
Hideaki Miyake
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
Yuki Okamoto
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
Hishikawa Takuro
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!デベロッパーネットワーク
Django boodoo
Django boodoo
泰 増田
Ci tutorial
Ci tutorial
Kazuaki Ueda
traitを使って楽したい話
traitを使って楽したい話
infinite_loop
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
Takaaki Hirano
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
azuma satoshi
あらためてPHP5.3
あらためてPHP5.3
Masashi Shinbara
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
Mais procurados
(18)
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Try Jetpack
Try Jetpack
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
Django boodoo
Django boodoo
Ci tutorial
Ci tutorial
traitを使って楽したい話
traitを使って楽したい話
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
あらためてPHP5.3
あらためてPHP5.3
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Semelhante a 3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
test
test
a1yama1123
Cakephp api
Cakephp api
Eiji Yokota
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
Local php-100828 2
Local php-100828 2
Akio Ishida
Best practice laravel
Best practice laravel
Risa Ohnishi
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
kenjis
FuelPHPをさわってみて
FuelPHPをさわってみて
Sotaro Omura
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4
arisu yano
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100
ichikaway
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
Masao Maeda
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
VOYAGE GROUP
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
System4 detail for_h
System4 detail for_h
Jun Chiba
Semelhante a 3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
(20)
test
test
Cakephp api
Cakephp api
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Local php-100828 2
Local php-100828 2
Best practice laravel
Best practice laravel
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
FuelPHPをさわってみて
FuelPHPをさわってみて
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
System4 detail for_h
System4 detail for_h
Mais de Yusuke Ando
ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
Yusuke Ando
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
Yusuke Ando
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
Yusuke Ando
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発
Yusuke Ando
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突
Yusuke Ando
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
Yusuke Ando
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
Yusuke Ando
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーション
Yusuke Ando
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行
Yusuke Ando
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
Yusuke Ando
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆ける
Yusuke Ando
Dev opschef
Dev opschef
Yusuke Ando
Paa s and oss
Paa s and oss
Yusuke Ando
New relic
New relic
Yusuke Ando
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
Yusuke Ando
Engine Yard Cloud
Engine Yard Cloud
Yusuke Ando
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
Yusuke Ando
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
Yusuke Ando
Mais de Yusuke Ando
(20)
ダイナミック広告の改善と拡大
ダイナミック広告の改善と拡大
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Testing your app with Selenium on Travis CI
Testing your app with Selenium on Travis CI
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
Shimokita.Unity Detonatorで爆発
Shimokita.Unity Detonatorで爆発
Shimokita.Unity RigidbodyとColliderで衝突
Shimokita.Unity RigidbodyとColliderで衝突
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
ゴールデンウィークに最適な学習コンテンツ
ゴールデンウィークに最適な学習コンテンツ
Travis CIですぐに始める継続的インテグレーション
Travis CIですぐに始める継続的インテグレーション
ブログやサイトのJekyllへの移行
ブログやサイトのJekyllへの移行
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
Shimokita.Unity パリの街をユニティちゃんが駆ける
Shimokita.Unity パリの街をユニティちゃんが駆ける
Dev opschef
Dev opschef
Paa s and oss
Paa s and oss
New relic
New relic
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
Engine Yard Cloud
Engine Yard Cloud
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
最近のCandyCane - PHP版Redmineでタスク管理を始めよう
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
Último
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Último
(10)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
TSAL 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
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
1.
3時間濃縮
CakePHP2.1 by nipotan 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
2.
本日の主旨
8時間耐久を圧縮 CakePHP2.1の基本 骨の髄に(強制的に)刻みこむ 時間が許す範囲で応用技 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
3.
who am I 3時間濃縮CakePHP2.1@札幌
/ Yusuke Ando (@yando)
4.
?
CakePHP2実践入門(仮) 技術評論社より今夏出版予定 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
5.
本日のメニュー
MVCの考え方 セットアップの肝 コントローラーの使い方 モデルの使い方 ビューの使い方 応用技の紹介 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
6.
by crabchick
MVCの考え方 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
7.
MVCだらけ 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
8.
CakePHPもMVC
Railsインスパイア系 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
9.
なぜMVC 複雑化するプログラム
整理が必要 分割の経験則 Model View Controller 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
10.
MVCに分割 巨大な プログラム 3時間濃縮CakePHP2.1@札幌 /
Yusuke Ando (@yando)
11.
MVCの役割 •Model データや処理(データベース処理) •View 見た目を担当(HTMLの出力) •Controller 入力を受けてモデルとビューを呼ぶ(それ以外) 3時間濃縮CakePHP2.1@札幌 /
Yusuke Ando (@yando)
12.
CakePHPの前に ふつうのPHPスクリプト で考えてみます 3時間濃縮CakePHP2.1@札幌
/ Yusuke Ando (@yando)
13.
<?php
$keyword = ''; if (isset($_POST['keyword'])) { $keyword = $_POST['keyword']; } mysql_connect('localhost','user','password'); mysql_select_db('cakephp_sample'); mysql_query('set names utf8'); $sql = sprintf( "SELECT id,name,description FROM friends WHERE name LIKE '%s'", mysql_real_escape_string('%'.$keyword.'%') ); $result = mysql_query($sql); $data = array(); while ($row = mysql_fetch_assoc($result)) { $data[] = $row; } ?> <html> <head><title>テストページ</title></head> <body> <form action="list1.php" method="POST"> <input name="keyword"><input type="submit"> </form> <ul> <?php foreach ($data as $row) { echo '<li>'; echo $row['name']; echo $row['description']; echo '</li>'; } ?></ul> </body></html> 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
14.
<?php
$keyword = ''; if (isset($_POST['keyword'])) { $keyword = $_POST['keyword']; } mysql_connect('localhost','user','password'); mysql_select_db('cakephp_sample'); mysql_query('set names utf8'); $sql = sprintf( "SELECT id,name,description FROM friends WHERE name LIKE '%s'", mysql_real_escape_string('%'.$keyword.'%') ); $result = mysql_query($sql); $data = array(); while ($row = mysql_fetch_assoc($result)) { Modelへ $data[] = $row; } ?> <html> <head><title>テストページ</title></head> <body> <form action="list1.php" method="POST"> <input name="keyword"><input type="submit"> </form> <ul> <?php foreach ($data as $row) { echo '<li>'; echo $row['name']; echo $row['description']; echo '</li>'; } ?></ul> </body></html> Viewへ 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
15.
<?php
//model.php mysql_connect('localhost','user','password'); mysql_select_db('cakephp_sample'); mysql_query('set names utf8'); $sql = sprintf( "SELECT id,name,description FROM friends WHERE name LIKE '%s'", mysql_real_escape_string('%'.$keyword.'%') ); $result = mysql_query($sql); $data = array(); while ($row = mysql_fetch_assoc($result)) { <?php //index.php $keyword = ''; } $data[] = $row; Model if (isset($_POST['keyword'])) { $keyword = $_POST['keyword']; } <!-- view.php --> include ‘model.php’; <html> include ‘view.php’; <head><title>テストページ</title></head> Controller <body> <form action="list1.php" method="POST"> <input name="keyword"><input type="submit"> </form> <ul> <?php foreach ($data as $row) { echo '<li>'; echo $row['name']; echo $row['description']; echo '</li>'; } View ?></ul> </body></html> 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
16.
別々にしただけ 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
17.
ひとつの方が楽? 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
18.
問題は量 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
19.
自然発生
進化の答えがMVC 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
20.
CakePHPのMVC
Controller置き場 (全ての起点) Model置き場 (データベース関連) View置き場 (HTML関連) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
21.
CakePHP習得の為に
Controllerの知識 Modelの知識 Viewの知識 それぞれの理解を深める 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
22.
セットアップの肝 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
23.
ポイント
pdo_mysql mod_rewrite PHP5.2以上 core.php / database.php chmod -R 777 app/tmp 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
24.
phpinfo() 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
25.
mod_rewriteが無い 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
26.
mod_rewriteの有効化
わりと地雷(勉強会中) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
27.
rewrite無しの場合 /**
* To configure CakePHP *not* to use mod_rewrite and to * use CakePHP pretty URLs, remove these .htaccess * files: * * /.htaccess * /app/.htaccess * /app/webroot/.htaccess * * And uncomment the App.baseUrl below: */ //Configure::write('App.baseUrl', env('SCRIPT_NAME')); コメントを外す(rewriteが無理な時だけ) urlの末尾にindex.phpを付ける 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
28.
準備完了 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
29.
Controllerの使い方 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
30.
典型的なコントローラー <?php // app/Controller/TasksController.php App::uses('AppController', 'Controller'); class
TasksController extends AppController { public function index() { $task_data = $this->Task->find( all ); $this->set( task_data ,$task_data); } } 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
31.
Controllerの必須テク
ディスパッチのルール $scaffold $uses $this->render() $this->set() $this->redirect() $this->request 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
32.
ディスパッチ アクセスされたURLに応じ て適切なコントローラーを
呼び出す機構 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
33.
ページコントローラー
index.php menu.php mypage.php に直接URLからアクセス (ふつうのPHP) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
34.
フロントコントローラー
index.php にまずアクセスして、 その中でそれぞれの処理に 飛ばす (CakePHPはこの方式) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
35.
ディスパッチの例 /tasks/index →TasksControllerのindex /Oden/umai →OdenControllerのumai /my_page →MyPageControllerのindex 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
36.
routes.phpなら 任意のマッピングも追加可能 (最後にURLだけ変更とか) そのままでOKなら設定不要 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
37.
$scaffold
public $scaffold; とするだけで標準機能が動く ※動作確認などに便利 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
38.
$uses class MyController extends
AppController { public $uses = array( Task , User ); } コントローラーが使うモデルのリスト 省略時はコントローラー名と同一 命名規則で苦しむのは横着するからです 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
39.
$this->render()
$this->render( hoge ); 任意のViewを呼び出す 省略時はアクション名と同名を呼ぶ 同じViewを使いまわす事もできる! 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
40.
$this->set()
$this->set( hoge , this is data ); 任意のデータをViewへ渡す スカラー値も配列も渡せる Viewで使いたいデータはset()! 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
41.
$this->redirect()
$this->redirect( oden/umai ); 任意のページへリダイレクト $this->flash() や $this->Session->setFlash() と組みわせてメッセージ表示 登録完了やエラー時によく使う 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
42.
$this->request
$this->request->data $this->request->pass $this->request->is() フォームの入力内容などにアクセス可 $_POSTなどを使った者は校庭10周に処す 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
43.
Modelの使い方 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
44.
典型的なモデル <?php // app/Model/Task.php App::uses('AppModel', 'Model'); class
Task extends AppModel { public $useTable = 'tasks'; } 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
45.
Modelの必須テク
$useTable $primaryKey find() save() saveField() updateAll() delete() deleteAll() 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
46.
Modelの必須テク2
$validates $belongsTo $hasOne / $hasMany $hasAndBelongsToMany 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
47.
Model手強い
Modelを制する者は Cakeを制す 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
48.
$useTable
public $useTable = tablename ; モデルが処理を行うテーブル名を指定 省略時はモデル名の複数形になる falseにするとテーブル無しモデル ここもはまりやすい 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
49.
$primaryKey
public $primaryKey = id ; テーブルの主キーを設定 省略時は id 既存のテーブルを使う場合に便利 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
50.
find()
$this->find( all ,$options); $this->find( first ,$options); $this->find( count ,$options); $this->find( list ,$options); $this->find( threaded ,$options); $this->find( neighbors ,$options); オプション次第で自在にSQL文を実行 (オプションが多い) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
51.
find()のオプション array(
'conditions' => array('Model.field' => $thisValue), 'recursive' => 1, //int 'fields' => array('Model.field1', 'DISTINCT Model.field2'), 'order' => array('Model.created', 'Model.field3 DESC'), 'group' => array('Model.field'), 'limit' => n, 'page' => n, 'offset' => n, 'callbacks' => true ) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
52.
find()のオプション 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
53.
find()のオプション array(
'conditions' => array('Model.field' => $thisValue), 'recursive' => 1, //int 'fields' => array('Model.field1', 'DISTINCT Model.field2'), 'order' => array('Model.created', 'Model.field3 DESC'), 'group' => array('Model.field'), 'limit' => n, 'page' => n, 'offset' => n, 'callbacks' => true ) 必要ない部分は適宜省略可能 様々なfind()にこのオプションを使う 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
54.
find( all )
の結果 $data = $this->Hoge->find( all ); $data[0][ Hoge ][ name ]; // Hogeのname $data[0][ Hoge ][ twitter ]; // Hogeのtwitter 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
55.
= 以外の比較 // field
> a のような比較 array( 'conditions' => array('Model.field >' => $thisValue), ) // field like %a% のような比較 array( 'conditions' => array('Model.field like' => % .$thisValue. % ), ) キー名にスペースを空けて演算子 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
56.
AND条件 OR条件 // AND array(
'conditions' => array( 'Model.field <' => 100 'Model.field >' => 20 ), ) // OR array( 'conditions' => array( OR => array( 'Model.field' => 10, 'Model.type' => A , ) ), ) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
57.
find( first )
の結果 $data = $this->Hoge->find( first ); $data[ Hoge ][ name ]; // Hogeのname $data[ Hoge ][ twitter ]; // Hogeのtwitter 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
58.
find( count )
の結果 $data = $this->Hoge->find( count ); 数値で帰ってくる 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
59.
find( list )
の結果 $data = $this->Hoge->find( list ); リストで帰ってくる 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
60.
find( threaded )
find( neighbors ) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
61.
save() Model->save($data,$validate = true); 渡されたデータを元にデータを保存
INSERT/UPDATEに両対応 主キーがあるかないかで分岐 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
62.
saveField()
Model->id = $id; Model->saveField($name,$value); 単一のフィールドを更新 しかしあまり使わない (save()で同じ事ができる) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
63.
updateAll() Model->updateAll($fields,$condition); 条件にマッチするデータを全て更新
あまり使わない (データが少なければ1件づつ save()でも問題ないので) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
64.
delete() deleteAll()
Model->delete($id,$cascade); Model->deleteAll($condition,$cascade); DELETEを実行できる。 しかし実際のシステムでDELETEは使わ ず削除フラグなどで操作する事が多い。 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
65.
$validates public
$validate = array( 'twitter' => array( 'rule' => 'notEmpty', 'message' => 'Twitter is very important' ), 'name' => array( 'rule' => 'notEmpty', ) ); 配列で設定したとおりに検査 save前に実行される 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
66.
$validates メッセージや複雑な条件も設定可能 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
67.
アソシエーション
$belongsTo $hasOne / $hasMany $hasAndBelongsToMany 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
68.
$belongsTo public $belongsTo =
array( 'Shimokita' => array( 'foreignKey' => 'friendlist_id' ) ); モデルが属する上位モデルを指定 日記(たくさん) ー> ユーザー(1) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
69.
$belongsTo 設定さえすれば自動で関連データを取得 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
70.
$hasMany public $hasMany =
array( 'Item' ); モデルが所有している下位モデルを指定 ユーザー ー> 日記(たくさん) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
71.
$hasMany 複数件の関連データが取得される 3時間濃縮CakePHP2.1@札幌 /
Yusuke Ando (@yando)
72.
Viewの使い方 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
73.
Viewの必須テク
Layoutの変更 $this->request $this->element() $this->Html $this->Form 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
74.
Layout 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
75.
Layoutの変更 ビューはレイアウトの中に
読み込まれる 標準は app/View/Layout/default.ctp 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
76.
default.ctpの要所 <body> <div id="container">
<div id="header"> <h1><?php echo $this->Html->link($cakeDescription, 'http://cakephp.org'); ?></h1> </div> <div id="content"> <?php echo $this->Session->flash(); ?> <?php echo $this->fetch('content'); ?> </div> <div id="footer"> <?php echo $this->Html->link($this->Html->image('cake.power.gif'), 'http://www.cakephp.org/', array('target' => '_blank', 'escape' => false));?> </div> </div> <?php echo $this->element('sql_dump'); ?> </body> 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
77.
CSSなど
<head> <?php echo $this->Html->charset(); ?> <title> <?php echo $cakeDescription ?>: <?php echo $title_for_layout; ?> </title> <?php echo $this->Html->meta('icon'); echo $this->Html->css('cake.generic'); echo $scripts_for_layout; ?> </head> 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
78.
CSS、画像はwebroot 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
79.
$this->request echo $this->request->data[
name ] リクエストはビューでも取れる (引き回す必要無し) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
80.
$this->element echo $this->element( template
,$data); テンプレートから別のテン プレートを読み込む。 (変数はオプションで渡す) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
81.
$this->Html $url = array(
controller => hoge , action => index ); echo $this->Html->link($title,$url); HTMLを生成するヘルパー URLを自動生成して便利 (手動でタグは書かない) 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
82.
$this->Form echo $this->Form->create( ModelName
); echo $this->Form->input($fieldName); フォームを生成する 初期値のフィルインや エラーメッセージを自動化 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
83.
応用技の紹介 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
84.
CakePHPの応用技
MVCのバランス MVCの各部品を強化 標準の強力な機能群 MVCの各要素に対応 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
85.
ベストプラクティス
モデル層を厚くせよ 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
86.
MVC::BHC
Behavior Component Model Controller Helper View 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
87.
応用技に手を伸ばす時
コードが肥大化した時 まずはHelper 次にComponent 最後にBehavior 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
88.
Helper Html
Paginator Form Session Cache Rss Js 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
89.
Component
Acl Pagination Auth Security Cookie Session RequestHandler 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
90.
Behavior
Tree Containable 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
91.
まだある応用技
プラグイン Coreクラス Console ユニットテスト 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
92.
今後の羅針盤
http://book.cakephp.org/2.0/en/ http://book.cakephp.org/2.0/ja/ 3時間濃縮CakePHP2.1@札幌 / Yusuke Ando (@yando)
93.
吐き気に勝った! 3時間濃縮CakePHP2.1@札幌 / Yusuke
Ando (@yando)
Baixar agora