トップページ⇒php
1001コメント309KB

【PHP】フレームワーク CakePHP 7ホール目【v1.2】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/01(火) 16:12:06ID:XVdxsVut
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです。

※sage推奨
テンプレは>>1-5くらい

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
thechaw
http://thechaw.com/projects
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
CakeMatsuriTokyo2009
http://matsuri.cakephp.jp/
0653nobodyさん2010/01/04(月) 19:34:32ID:???
>>650
俺も好き。あんまり推奨じゃないみたいだけど、
まぁ何かあったら <?= を <?php echo に置換すりゃいいだけだし。

>>652
推奨しませんよ ってことぐらい。
0654nobodyさん2010/01/04(月) 20:09:48ID:???
>>652
稼働安定性が悪い場合がある。とか意味不明なエラーにハマルとかある???
0655nobodyさん2010/01/04(月) 21:18:57ID:???
ブログチュートリアルでCake勉強してます。
http://book.cakephp.org/ja/complete/219/Blog
view($id = null)の$id = nullってどういう動作を書いてるんですか?
view()呼び出し時に$idを初期化(null)すると考えたのですが、せっかく読込んだ引数を
初期化するのもおかしいし、delete($id)は$id = nullになっていない事も説明つきません。
よくわかりません。だれか教えてください。

function view($id = null) {
function edit($id = null) {
function delete($id) {

function view($id = null) {
  $this->Post->id = $id;
  $this->set('post', $this->Post->read());
}
0656nobodyさん2010/01/04(月) 21:39:41ID:???
>>655
read()メソッドの中にこんな記述がある。
ttp://api.cakephp.org/view_source/model/#line-1028

if ($id !== null && $id !== false) {
  $this->data = $this->find('first', array(
   'conditions' => array($this->alias . '.' . $this->primaryKey => $id),
   'fields' => $fields
  ));
  return $this->data;
} else {
  return false;
}

editメソッドに$idが指定されてなかった場合、read()メソッドが返す値をfalseにしたいから、
仮引数が与えられてなかった場合にnullを代入するようにしているんだと思う。
0657nobodyさん2010/01/04(月) 22:18:18ID:???
>>656 Thanks.
やはりfunction edit($id = null) { はeditメソッドが呼び出されたら$id = nullで初期化し
それから、あれば引数の値を取り込むんだね。納得しました。

また、Bakeが自動生成したソースを見てみたらfunction delete($id = null) { になってた。
http://book.cakephp.org/ja/complete/219/Blog
ブログチュートリアルのdelete($id)が間違いぽいね。
0658nobodyさん2010/01/05(火) 22:35:00ID:GyjRQCtP
zendからcakeに移ったが
やばいね!cake!
こんなフレームワークならZ・E・N・D使うわwwwwwwwwwwwwwwwwwwwwww
0659nobodyさん2010/01/06(水) 00:48:10ID:???
>>658
どうぞ zendにお戻りください。引き止めはしません。
サヨナラ。
0660nobodyさん2010/01/06(水) 01:00:19ID:???
調べてから移れ
0661nobodyさん2010/01/06(水) 12:21:08ID:???
zendの方がヤバくね?
プラグイン入れないと殆ど使えない
ってか、PHPが生すぎる
0662nobodyさん2010/01/06(水) 13:10:36ID:5N2miMbo
あの・・・私ね、この前までZendFramework使っていたんですけど
最近、他のフレームワークが気になって試しにcakephp(笑)インストールしたんです。

なんだろ、cakephpって浅いんです(笑)
function とか varとか・・・
なんでもarray(
PHP4が使う糞フレームワーク

>>661
プラグイン入れないと使えない?
てめぇのケツにプラグインさしとけwwwwwww
PHPが生すぎるってPHPで作られたフレームワークに向かって生wwww
0663nobodyさん2010/01/06(水) 13:23:55ID:???
その浅さやシンプルさがcakeのいいところだろ
0664nobodyさん2010/01/06(水) 13:27:58ID:???
人間としての浅さが見える文章で微笑ましいですね
0665nobodyさん2010/01/06(水) 13:37:24ID:5N2miMbo
>>663
おまえ悪口言われているよ><

俺がcakephpをPHP5で作るならZendFramework使うわwwwwwwww
0666nobodyさん2010/01/06(水) 13:39:26ID:???
664は662へのレスでしたとさ。
0667nobodyさん2010/01/06(水) 13:49:23ID:???
ageてるレスはスルーでたのむ
0668nobodyさん2010/01/06(水) 15:49:06ID:???
どれも使えない私はどうすればいいdすか?^^;
ZendもCakeも難しいです〜><
0669nobodyさん2010/01/06(水) 16:00:01ID:???
チュートリアル10回やんなさい
0670nobodyさん2010/01/06(水) 17:54:41ID:???
ここはcakephpのスレです。zendはzendスレでお願いします。
0671nobodyさん2010/01/06(水) 22:48:01ID:???
zendも好きだけどcakephpもやっぱり好きで何かしら影響を受けてる。
cakephpのmodel::find()メソッドはよくできてると思うんだ。
zendのモデルにselect系の問い合わせメソッドを実装するときも、
cakephpのfind()の引数書式っぽく使えるように書いちゃう。

/**
* @param string mode
* @param array option
*/
public function getHogeList($mode,$option)
{
  〜〜
}


そういえばフレームワークを触りだしてからsql書かなくなったなあ。
いい傾向なのか悪い傾向なのか。。。
0672nobodyさん2010/01/07(木) 00:33:07ID:hFey0NAx
おもろいよCakeは
0673nobodyさん2010/01/07(木) 04:44:13ID:???
Table A, Table B, Table C の三つのテーブルがあって
A.b_id, B.c_id というリレーショナルを行っています (二つとも belongsTo)

A を扱うモデルの find で recursive=2 の設定で C テーブルのカラムまで取得出来るのですが
conditions の検索条件で 'C.hoge' => '123' のような事は出来ないのでしょうか?

B までのカラムなら検索条件に含める事は出来るのですが リレーションのリレーション以上のテーブルの検索条件が行えなくて困ってます
0674nobodyさん2010/01/07(木) 07:38:43ID:???
あれだな。
生PHPは徒歩、cakeは車。
目的地まで行くのはめちゃはええけど、
渋滞にはまるとまったく進まないし、
目的地についても、車止めるところを求めてさ迷う
0675nobodyさん2010/01/07(木) 21:28:05ID:???
健康の為に1日1万行歩きましょう
0676nobodyさん2010/01/08(金) 03:52:34ID:???
Hetemlの共用SSL環境下では、CakePHP使えないのかな?

設定をあれこれ変えても、どうにもCSSなどの設定が合わないよ。使えた人、いる?
0677nobodyさん2010/01/09(土) 10:07:51ID:???
>>675
まあ一理ある。
時間と手間が許せるなら
足で歩いたほうが色々といいよな・・・
0678nobodyさん2010/01/09(土) 11:01:06ID:???
>>675  >>677
オレは、車の長所短所、危険性を良く理解し
交通事故を起こさない様に常に注意し、便利な「車」を最大限に活用してるなあ。
やっぱ「車」のない生活は考えられない今日この頃です。
0679nobodyさん2010/01/10(日) 11:35:01ID:???
>>676
SSLって導入するにも手間で面倒だし、
一般ユーザーはSSLのこと気にすら止めてない。
しかも情報が流出するのはSSL関係なしで流出するから必要ないような気もするけど
どうなんだろ。
0680nobodyさん2010/01/10(日) 11:44:37ID:???
仕事でサイト作る時は、何か問題が起きた時にSSLもやってないのかよ!
と必ず突っ込まれるので、とりあえず設定するという感じだよね
0681nobodyさん2010/01/10(日) 18:17:38ID:???
SSL = Secret service line

あまり知られてないんだがな豆知識
0682nobodyさん2010/01/10(日) 21:01:22ID:???
なるほど、SE=Service Engineerみたいなもんか
以下、ネタにマジレス禁止
0683nobodyさん2010/01/10(日) 21:23:16ID:???
興味本位でUML図みたいなの書いてるんだけど
例えばpostモデルがあったとして、

・ユーザーがページをクリックすると、postデータ一覧が表示される
 [ユーザー] --ページをクリック--> [controllers/posts_controller] --function:view--> [views/posts/view.ctp]
                                        ├--データ取得--> TBL[posts]
                                        └--ページを返却--> [postデータ一覧ページ]

何が何を呼ぶか、みたいな関係図を書くとこんな感じになるとおもうんだけど
この場合、modelってこの図には絡まないの?
 ・リレーション定義
 ・登録時のバリデーション
なんかは明示的にモデルに書くからわかるんだけど、
独立したモデルから単にデータを引っ張ってくる場合に、関係図的にモデルはどう絡むんでしょうか。
絡まない、が正解?
0684nobodyさん2010/01/10(日) 21:33:44ID:???
書き込んでから落ち着いて考えたら、自己解決しました。失礼しました(ヽ'ω`)

・ユーザーがページをクリックすると、postデータ一覧が表示される
 [ユーザー] --ページをクリック--> [controllers/posts_controller] --function:view--> [views/posts/view.ctp]
                              ├─function:find('all')--> [models/post] --> TBL[posts]
                              └─ページを返却--> [postデータ一覧ページ]
0685nobodyさん2010/01/11(月) 12:02:25ID:???
cakephpで掲示板サイトを作ろうと思っています

書き込みにトランザクションを使おうと考えてマニュアルを見ると
saveAll()が使えると書いてありました。
しかしこれはひとつのモデルにしか使えないのでしょうか。
いくつかのモデルで書き込みを行ってからコミットしたいのですが
方法があれば教えて下さい。よろしくお願いします。

0686nobodyさん2010/01/11(月) 13:11:26ID:???
>>685
saveAllは「関連づけされた複数モデルのデータの保存」か「ひとつのモデルの複数データの保存」に使う。
それ以外の場合は、自前でトランザクションを発行すると良い
0687nobodyさん2010/01/11(月) 14:00:16ID:???
>>686
これさ、「ひとつのモデルの複数データの保存」出ない時もsaveAll()使えば、トランザクションの事気にしなくてもいいんでない?
0688nobodyさん2010/01/11(月) 16:27:36ID:???
トランザクションってなんですか?
馬鹿でも分かりやすい説明お願いします
0689nobodyさん2010/01/11(月) 16:36:29ID:???
馬鹿には知らないほうが良いことがある
0690nobodyさん2010/01/11(月) 16:40:22ID:???
トランザクションってなんですか?
天才でも分かりやすい説明お願いします
0691nobodyさん2010/01/11(月) 16:42:43ID:???
天才はトランザクションという文字を見ただけで全てが分かる
0692nobodyさん2010/01/11(月) 16:46:49ID:???
英語がわからないときには、単語を分割するとわかりやすい
この場合、トランとザクションを調べれば済む
0693nobodyさん2010/01/11(月) 16:53:27ID:???
説明できないんだろwwwwwwwwwwwwww
まじCakePHP使いはm9(^Д^)プギャーが多いなwwwwwww
0694nobodyさん2010/01/11(月) 16:55:37ID:???
理解しなくても作れるからな。その代りセキュリティーホールがいっぱい(笑)
0695nobodyさん2010/01/11(月) 17:09:46ID:???
作れてないじゃんw
0696nobodyさん2010/01/11(月) 18:30:40ID:???
>690
ヒント:今年の干支
0697nobodyさん2010/01/11(月) 21:32:04ID:???
山羊だっけ?
0698nobodyさん2010/01/11(月) 22:13:24ID:???
トランザクションって
コミットとかでしょ?

SQLのことだから別に知らなくても問題ない。
cakephpが勝手にやってくれるし。
0699nobodyさん2010/01/11(月) 22:38:11ID:???
http://cakephp.jp/doc/ch06s03.html
0700nobodyさん2010/01/11(月) 23:25:43ID:???
cakephpが勝手にやってくれるし。
0701nobodyさん2010/01/12(火) 22:26:59ID:???
イヤン・・・ハクション
0702nobodyさん2010/01/12(火) 23:06:39ID:???
cakeって頭いいんだな
0703nobodyさん2010/01/12(火) 23:23:26ID:???
自律型フレームワークなんだな
0704nobodyさん2010/01/13(水) 01:14:38ID:???
オレはMS Accessっ子、ブリオクエリっ子で、RDBは線で結ぶ方法しか知らなくて、SQLは
読めも書けもしない。だからCakePHPのfindとか、saveとかメチャ好きなんだけど、
SQL書ける人は、「Cakeのfindとかsaveとか覚えちゃられねーよ。
汎用性のあるSQLで書くのが一番じゃね。」と言う人も多いのかなあ?
それでもヤッパCakeのfindとかsaveとかは、直感的で効率的で便利と評価されるのかなあ?
0705nobodyさん2010/01/13(水) 01:23:13ID:???
普通に入れたり出したりしてる分には楽だけど、集計とかロジックとか入れたい時はむしろ邪魔に感じるな
生SQLをqueryに投げた時、結果の格納のされ方にクセがあってちょっと戸惑った
0706nobodyさん2010/01/13(水) 03:31:13ID:???
>>704
お前の文体嫌いじゃないぜ
SQLについては直感的というか効率&汎用性を考えて使い分けることもあるという程度かな
0707nobodyさん2010/01/13(水) 03:43:15ID:???
SQLとか楽に処理してくれなら
わざわざ覚える必要無いだろ

もう俺SQL構文愛してぺろぺろしたいくらいですって言うなら別だが・・
0708nobodyさん2010/01/13(水) 14:15:50ID:???
union 使ったり、
めんどくさい条件とか使うときは生SQL。

ちょとしたデータの操作はcakeを使ったます。
0709nobodyさん2010/01/13(水) 15:45:03ID:???
質問なのですが、皆さんはテーブルの結合を行いたいとき、プログラム内で随時
JOINをしているのですか?

俺はMySQL側でビューを定義して、そのビュー用のmodelを定義して、それ経由で
データの取得をしてます。

プログラム内でjoinのほうが各段に速いとか、明確な優位性はあるんでしょうか?
0710nobodyさん2010/01/13(水) 22:00:48ID:???
cakePHPでなんか作って配布する場合
appフォルダのみ配布するべきか、cakeも含めたフォルダを配布する
どっち?
0711nobodyさん2010/01/13(水) 23:12:16ID:???
>>710
appとvendorsに何も入っていない時のcake本体をzip圧縮した場合のファイルサイズは約1.6MB
vendorsにも何か入れる場合が多いし、高々cake本体1.6MBだから、cakeも含めたフォルダを
配布するなあ。cakeはhtdocsの下へ配置すればどこでも動くので、この配布の方が安心で手間
いらずだと思う。
0712nobodyさん2010/01/14(木) 00:17:27ID:???
>>711
アザーズ!
landとかいう無料サーバーにCakephpアップしたら時間かかったから
気になったんだよぇ〜
0713nobodyさん2010/01/14(木) 12:15:33ID:???
Cakeはリリースバージョンによって、安定板パッケージでもイロイロエラーを含んでいるので、
丸ごとパッケージにする。

※以前、Authコンポーネントでうまく認証がかからないエラーがあった
0714nobodyさん2010/01/14(木) 16:10:39ID:???
>>713
アザーズ!
0715nobodyさん2010/01/15(金) 18:42:50ID:???
$_POSTの値の文字コードをチェックしたり変換する場合、どこでこの処理書いてる?
0716nobodyさん2010/01/15(金) 18:45:07ID:???
>>715
appコントローラーの beforefilter に一票。
0717nobodyさん2010/01/15(金) 18:48:19ID:???
>>716
なるほど継承してすべてのコントローラに対応できますね
0718nobodyさん2010/01/16(土) 16:49:23ID:???
http://bookuma.com/
ケータイでこのサイト見てたらエラーが表示されたんだけど、ディレクトリ構成がもろにcakephpだった
0719nobodyさん2010/01/17(日) 14:58:10ID:???
CakePHP 1.3.0-beta キタ━━━━━━(゚∀゚)━━━━━━ !!
http://bakery.cakephp.org/articles/view/cakephp-1-3-0-beta-has-landed
0720nobodyさん2010/01/17(日) 16:43:43ID:???
今までのCakePHPと CakePHP1.3は別物ですのでご注意を

というより改名すべき

焦げちゃったPHPとかにね^^;

0721nobodyさん2010/01/17(日) 16:49:52ID:???
クッキーPHPとか?
0722nobodyさん2010/01/17(日) 21:32:18ID:???
http://blog.ecworks.jp/archives/861
この辺を見ると1.3はそれほど変わった感じもないけど
0723nobodyさん2010/01/17(日) 21:34:00ID:???
cakephpのバージョンが上がるたび、覚えにくくなる。
技術の進歩とともに自分の老化が。

バージョンアップに対応しなくていいやって思ったら技術者としてだめだよね。
0724nobodyさん2010/01/17(日) 23:35:23ID:???
>>723
バージョンごとの差異を覚えるのは俺も苦手
まっさらな状態から覚えた方が覚えやすいよ
0725nobodyさん2010/01/18(月) 00:39:57ID:???
>>720
それはcake3の話なのでは?
0726nobodyさん2010/01/18(月) 01:09:24ID:???
新しいJsHelperとやらでJQueryっぽいメソッドチェイン出来るっぽいね
激しく期待。つか標準でscriptaculous以外をサポートしたのって1.3からだよね

$js->get('#foo')->event('click', $eventCode);
0727nobodyさん2010/01/18(月) 01:53:18ID:???
JQuery用ヘルパー作ってたけど無駄になりそうだ。

でもJQueryをCakeのAjaxHelperの書式に合わせようと思ったら結構無理があったから、
標準でこういう書き方できるようになるならいいや。
0728nobodyさん2010/01/18(月) 01:56:16ID:???
JQueryって書くとJavaっぽくなるな
0729nobodyさん2010/01/18(月) 12:20:16ID:???
?
0730nobodyさん2010/01/18(月) 16:10:52ID:???
小文字にしろ、ということだろう
0731nobodyさん2010/01/18(月) 22:17:03ID:???
mootoolsの事も忘れないでください。
0732nobodyさん2010/01/20(水) 19:42:54ID:???
最初のsqlテーブルの組み方が重要だねこれ。
ミスるphpコードが複雑になる。。。
0733nobodyさん2010/01/20(水) 23:25:07ID:???
>>732
フレームワークは規約を守ってナンボよ。
0734nobodyさん2010/01/21(木) 00:44:08ID:???
DBのデザイン間違ってたらどうにもならない
0735nobodyさん2010/01/21(木) 00:46:10ID:???
まあ自己中にはフレームワークはあわんだろうな
0736nobodyさん2010/01/21(木) 18:43:26ID:???
cakeに限った話じゃないけど
function getEmail()

とか

function setApple()
とか

function のあとの、大文字にした方がいい部分ていうのは明確な決まりがあるのかな。
0737nobodyさん2010/01/21(木) 18:47:39ID:???
明確な決まりって言うか、読みにくいでしょ

getemailとか
setapple

---------------


getEmail
setApple
0738nobodyさん2010/01/22(金) 02:16:00ID:fZt9z1/I
基本キャメルケースだけど、別にアンダースコアでもいいと思う
0739nobodyさん2010/01/22(金) 11:25:18ID:???
Pearのコーディング規則を参考にするといいかもね。

http://pear.php.net/manual/ja/standards.naming.php
0740nobodyさん2010/01/22(金) 16:34:06ID:???
cake使ってんなら参考にするのはこっちじゃね?
http://book.cakephp.org/view/509/Coding-Standards
0741nobodyさん2010/01/23(土) 21:19:58ID:???
>>737-740
ありがとう。
0742nobodyさん2010/01/27(水) 00:02:16ID:???
入れてみたけどIDEって何使うのがいいのかな?
Visual stadioでしか開発した事ないのでテキストエディタ
まんまでは違和感が。
0743nobodyさん2010/01/27(水) 02:24:26ID:???
VSからならPDTがいいんじゃね。重いけど
07447422010/01/27(水) 07:23:15ID:???
>>743
Eclipse+PDTですかね。レスサンクス。

PDTとcakeを同じサーバーにインストする方法は簡単だけど、
サーバーと開発環境がリモートだと結構設定が難しそうですね。
調べないと……。
0745nobodyさん2010/01/27(水) 12:10:53ID:???
>>743

おれ、netBeans使ってる。
cakeのメソッド類を入力補完リストに表示させるため方法は、Eclipseの方法がそのまま使えた。
Eclipseより快適です
0746nobodyさん2010/01/27(水) 20:22:02ID:???
リモートデバッガならzend studioなのかな。xdebug?
俺はマカーにスイッチしてからはTextMate一本になった。
cakeのsnippetも本家theChawでgitレポジトリが作られてるし。オススメ。
マカーにスイッチした際は是非。日本語怪しいけど。
0747nobodyさん2010/01/28(木) 14:53:03ID:???
トランザクション用に、select for updateを発行したいのですが、Cakeでどうにか実現できる方法はありますか?
0748nobodyさん2010/02/01(月) 17:10:22ID:???
IDE使ってる人多いのね
自分は普通にviだわ

公式サイトのcompareページはnoindexしてほしい
0749nobodyさん2010/02/02(火) 00:14:38ID:???
ページ毎に表示変えたいんですけどどうすればいいですか?
エレメンとでファイルを呼び出すって感じですか?
0750nobodyさん2010/02/02(火) 06:59:25ID:xXDrlP2U
Cakephpってプロジェクトに
cakephpのファイルを毎回ぶち込んで使うって解釈でOk?

PEARみたいにPHPとかにインストールするんじゃなくて
0751nobodyさん2010/02/02(火) 09:08:23ID:???
どこかを書き換えれば共通に出来る
0752nobodyさん2010/02/02(火) 09:30:11ID:???
>>750
インストールではない(解凍のみで使用可能)
基本的には、webroot/index.phpとwebroot/test.phpの定数を書き換えれば、どこにでも置けるから共通化が可能
プロジェクト名も変更可能

でもオススメはシンボリックリンク使って定数の書き換えをしないようにすることかな
■ このスレッドは過去ログ倉庫に格納されています