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

【PHP】フレームワーク CakePHP 12ホール目【笑】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/07/01(金) 16:33:46.28ID:???
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja

前スレ
【PHP】フレームワーク CakePHP 11ホール目【v1.3】
http://hibari.2ch.net/test/read.cgi/php/1297860755/
0116nobodyさん2011/07/23(土) 19:09:03.76ID:???
自演してまで馬鹿な考え広めなくていいよ
0117nobodyさん2011/07/23(土) 20:25:12.50ID:???
>>115
ありえん
0118nobodyさん2011/07/23(土) 20:28:29.38ID:TdNTdShr
この前EC-CUBEをちょっと触ったけど、コントローラーにSQLとCSSが書いてあったよ。
0119nobodyさん2011/07/23(土) 22:36:05.05ID:???
EC-CUBEはスパゲティコード過ぎるからな
0120nobodyさん2011/07/23(土) 23:54:29.15ID:???
>>118
あっちはMVCの概念で作られてはいない。
ひどいごった煮だよ。
0121nobodyさん2011/07/24(日) 09:35:25.15ID:???
CakePHPもlayout使う場合、$title_for_layoutをコントローラでsetしないといけないよね。
あれってビューで設定できないの?
CSSなら、
$html -> css('abc', null, array('inline' => false));
でできるんだけど、同じようにタイトルもできたらいいんだけど。
0122nobodyさん2011/07/24(日) 15:34:45.69ID:???
$this->set('title_for_layout', 'abc');
0123nobodyさん2011/07/24(日) 17:11:36.84ID:???
>>122
ビューでっていってんのに
0124nobodyさん2011/07/24(日) 17:53:34.30ID:???
>>123
*.ctp に>>122 の通り書いてみろって
0125nobodyさん2011/07/24(日) 18:39:27.04ID:???
レンタルサーバーにアップする場合どこを設定するのかググってもさっぱりわからない。
0126nobodyさん2011/07/24(日) 18:43:37.38ID:???
んなもん、レンサバによるだろうに
0127nobodyさん2011/07/24(日) 20:43:06.84ID:???
>>125
メジャーなIaaSくらいは公式で手順を公開してほしいよな。
Azureとか。
0128nobodyさん2011/07/24(日) 21:27:38.88ID:???
>>125
PHPが動けば、最悪FTPでどうとでも出来る。
0129nobodyさん2011/07/25(月) 00:04:03.79ID:???
>>126
ここ
http://www.toypark.in/
0130nobodyさん2011/07/25(月) 00:31:03.69ID:???
マニュアルに沿ってやれば特に難しいことは無いと思うけど。

ドキュメントルートの中にしか入れないレンサバなら「3.3.1 開発」のページ
一段上に上がれるレンサバなら「3.3.2 運用」を
VPSとか好きにいじれる鯖なら、「3.3.3 応用インストール」を見て好きなところにコアを入れればいい。

0131nobodyさん2011/07/25(月) 01:23:27.03ID:???
てか、普通に
/public_html
└/cake

で、いんじゃないの?
0132nobodyさん2011/07/25(月) 22:18:23.04ID:???
知ってるかどうか分からないけど、
マッチングサイトの「さぶみっと!」ってCakePHPで開発してるんですかね?
ログインフォームを見ると、name="data[Customer][c_mail]"
みたいになってました。
0133nobodyさん2011/07/26(火) 01:54:11.26ID:???
インデックスのつけ方わからん
0134nobodyさん2011/07/26(火) 01:54:48.76ID:???
ググってやっとできた。
http://cialla.toypark.in/note/dev20100702_01.php

一番下に書いてあるようにアクセスのURLがださい。
>アクセスは http://cialla.toypark.in/sample/index.php/コントローラー/アクション/引数 のように
>index.php をはさむ形になります。

こんなのは嫌だから他のサーバーに変えたい。
CakePHPが使える無料のサーバーのお勧めはある?
0135nobodyさん2011/07/26(火) 08:26:21.57ID:???
自鯖
はい次の人
0136nobodyさん2011/07/26(火) 15:45:29.74ID:HGkMvVWC
今時無料で探すのは無理じゃないか?
月200円捻出してXREAでも借りた方がいいと思う
0137nobodyさん2011/07/26(火) 18:15:32.16ID:???
さすがに無料というのは虫が良すぎる話しだよなw
月100円でも出せば、ロリポップやさくらでも借りられるだろ。
それすら出せない奴がFWでどんなコンテンツ提供するって言うんだ?
0138nobodyさん2011/07/27(水) 08:20:56.42ID:???
バージョンアップキタ!!

2.0系を新規に使うのはまだ早いかな?
0139nobodyさん2011/07/27(水) 10:52:52.97ID:???
>>138
じゃぁ俺が使ってみる
0140nobodyさん2011/07/27(水) 11:35:39.15ID:???
いや、俺が使ってみる
0141nobodyさん2011/07/27(水) 12:15:56.89ID:???
いやいや、俺が
0142nobodyさん2011/07/27(水) 13:06:18.65ID:???
どうぞどうぞどうぞ
0143nobodyさん2011/07/28(木) 01:45:02.72ID:???
フリーランスでWEBアプリを開発しています。
PG歴8年で、PHP歴は1年程度です。
フレームワークを使わないPHP開発は一通り経験しているつもりです。

まだcakeを紹介したサイトをいくつか読んだレベルなのですが、
「なぜcakeを使うのか?」がいまいちピンときていません。

開発スピードなら、既成ライブラリや私製ライブラリで十分な成果が出る気がします。
MVCがしたいなら、別にcakeをつかわなくてもできるんじゃ?と思います。
複数PGでの協業にcakeが威力を発揮するとも思えないのです。

みなさんはなぜcakeにかぎらず、PHPフレームワークをつかっているのでしょうか?
みなさんのご経験された案件でcakeなりPHPフレームワークを使うことを決定した理由は
なんなのでしょうか?差し支えなければ教えてください。
0144nobodyさん2011/07/28(木) 02:05:07.80ID:???
なんかセッションがすぐ切れるんだが
core.php
Configure::write('Session.timeout', '720');
Configure::write('Security.level', 'low');
こういう設定なのに、、、
ほかにセッション関連の設定ってあったっけ?
0145nobodyさん2011/07/28(木) 09:25:36.36ID:???
>>143
デザイナがいなくて画面を自分で作らなければいけない仕事をやってるんで、
scaffoldを吐き出してくれるのが一番助かってるかなあ。
あとはクエリパラメータを関数の引数にマップしてくれるので
どこでどのパラメータを使っているかわかりやすいとか。
フォームヘルパーみたいのも自作しなくてすむし。
ページングも楽だ。

まあ、単体で見るとたいしたことなくても、Railsがフルスタックフレームワーク
と言われていたように、オールインワンでそろってるのが楽なわけよ。
0146nobodyさん2011/07/28(木) 09:31:09.08ID:???
>>143
俺は単に「ネット上の情報が一番多い」事が理由だな

cakeに限らない場合、命名規則や開発方法が決められていると、
開発時の迷いが少なくなるというメリットがある。俺にはこれがでかい。
0147nobodyさん2011/07/28(木) 09:35:44.21ID:KTDSJqbk
なんとなく使ってる感じですかね、別にこれじゃなくてもなんでもいいです。
あと情報が多いのも理由ですね、ここもそうですが他のプログラマーの意見を見るのも参考になりいますし。
0148nobodyさん2011/07/28(木) 10:55:09.01ID:???
>>143
チーム開発してると合意というか統制がとりやすい。デザインパターンみたいなもん。
保守面でもFWのバグやセキュリティフィックスの作業が軽減できる。
Cake1.x自体は構造が古くてクソだけど。
0149nobodyさん2011/07/28(木) 14:22:31.40ID:???
標準Authコンポーネント使って管理ページ作ってるんですが、SSLにするのが普通ですか。
0150nobodyさん2011/07/28(木) 16:15:59.59ID:???
>>144
これなんだけど、
ログイン情報を Session->write() で書き込んで
>>144のような設定なのに数時間ぐらいで切れる
だれかエスパーして
0151nobodyさん2011/07/28(木) 17:06:30.84ID:???
>>150
数時間どころじゃなかった
1時間か、それ以下で切れる><
0152nobodyさん2011/07/28(木) 17:10:54.49ID:???
php.iniの設定は?
セッションファイルは本当に削除されてるか?
01531432011/07/28(木) 19:26:15.08ID:???
>>145
>>146
>>147
>>148

なるほど。
参考になります。
と同時に自分の浅はかさを露呈したと赤面の限りです。
もうちょっと勉強してでなおしてきます。

みなさまご丁寧に返信有難うございました。

※2chでこのようにまともに
 返信いただけることも少ないもので。
0154nobodyさん2011/07/28(木) 20:14:41.46ID:???
それはまともな質問できてないからだよ
0155 [―{}@{}@{}-] nobodyさん2011/07/28(木) 20:52:10.64ID:???
>>153
いきなり長文で余計な情報いっぱいの質問しても、
普通は回答なんてこないよ。

要点を手短に、具体的に。

あなたの質問なら
>「なぜcakeを使うのか?」
この1文以外は余計な情報じゃないですか。
0156nobodyさん2011/07/28(木) 20:55:36.17ID:2K/biVGO
なぜcakeを使うのか?
0157nobodyさん2011/07/28(木) 21:08:06.68ID:???
個人的にはcakeのプロジェクトに関わるはめになっただけ
そうでなきゃPHPなんか使う気がせん
0158nobodyさん2011/07/29(金) 08:25:57.30ID:???
memcached
日本語でなんていうの?
0159nobodyさん2011/07/29(金) 09:42:25.49ID:???
間違いだとわかっていても頭の中では常にメムキャッシュド
0160nobodyさん2011/07/29(金) 14:16:11.30ID:???
プログラマーのために
IT用語かな読み辞典を作ろうと思うけど
どうですか?
0161nobodyさん2011/07/29(金) 14:42:46.19ID:???
結構です
0162nobodyさん2011/07/29(金) 15:44:08.35ID:???
あ、そういうアプリがあれば、無料なら入れてみるかも
0163nobodyさん2011/07/29(金) 18:37:37.81ID:???
>>162
誤爆ですか?
0164nobodyさん2011/07/29(金) 19:01:31.63ID:???
>>158
最後のdは過去形ではなく、
デーモンのdだから
メモ(メム)キャッシュディー
でいいんじゃないか
0165nobodyさん2011/07/30(土) 00:07:23.39ID:???
>>164
え、マジでデーモンのdだったのか…
01661602011/07/31(日) 15:09:43.71ID:???
口頭ベースの仕様書なしアジャイル開発が主流になってきてるから
memcached
これ日本語で統一されてないと
時間ロスになるじゃん。
だから
プログラマーのためのIT用語かな辞典が欲しいのであります。
0167nobodyさん2011/07/31(日) 15:23:59.96ID:???
え…アジャイルって仕様書作らないの?
0168nobodyさん2011/08/01(月) 10:38:44.82ID:???
このフレームワークMySQLにクエリ投げすぎじゃね?
ページ表示すると、CakeSqlLogが84行とかあるんだけど。。。
あえて可視化されて、多く感じるだけで、
他のフレームワークや、普通のシステムもこれぐらい投げてるものなのかな?
0169nobodyさん2011/08/01(月) 11:24:17.47ID:???
余計な処理が多いというのは俺も感じる。
2系でそういうの無くなればいいが、おそらく無くならないだろう・・・
0170nobodyさん2011/08/01(月) 12:00:23.31ID:???
SHOW FULL COLUMNS みたいのはデバッグ時だけだからそういうのは差し引いていいよ。
0171nobodyさん2011/08/01(月) 14:47:33.56ID:???
insertしたあとに勝手にlastinsertidしたりというのはあるな。
しかもその後自分でlastinsertidしようとすると、またクエリ投げるし。
キャッシュ効いてるから対したロスではないんだろうけども、気になる。
0172nobodyさん2011/08/01(月) 14:58:08.84ID:???
CakePHPで掲示板つくって運営してるけど、
さくらインターネットからプログラム見なおせゴルアとお叱りうけて、
同時接続数制限かかりました
0173nobodyさん2011/08/01(月) 15:49:37.75ID:???
>>172
レン鯖か?VPSにすればいいのに。
0174nobodyさん2011/08/01(月) 16:21:44.96ID:???
>>172
何プランですか?
0175nobodyさん2011/08/01(月) 16:29:21.22ID:???
>>172
プログラムに問題が?
ユーザーが増えただけ?
0176nobodyさん2011/08/01(月) 18:37:18.95ID:???
>>172
ここに書いたということはcakePHPが原因だったの?
0177nobodyさん2011/08/01(月) 19:40:28.61ID:???
>>173
VPSはセキュリティとかがめんどくさいし、
値段対スペックもそれほどよくないんじゃないかな

>>174
スタンダードです

>>175,176
ユーザーが増えたのもあるけど、
やっぱプログラムもあると思う
キャッシュ機構使ってないからな
0178nobodyさん2011/08/01(月) 20:43:41.20ID:???
単にリクエスト数が増えたのが原因ならプログラム見なおせっていう言い方はされないんじゃないかな。
掲示板でそんな重い処理をしてるとも思えないから、インデックスがあたってないとか
slow quelyが多すぎるってことなんじゃないだろうか。
0179nobodyさん2011/08/01(月) 20:45:09.69ID:???
>>177
いや、俺が実際、あんたと同じような状況で
さくらレン鯖→さくらVPSに乗り換えてるから。
鯖のパフォーマンスは全く違うよ。値段も月980円だし。
ま、スタンダードプランと比べたら高いけどw
0180nobodyさん2011/08/01(月) 22:10:28.18ID:???
>>179
まじか
ビジネスにしたわ
VPSは他で使ってるけど、最初の設定が面倒
0181nobodyさん2011/08/01(月) 22:32:45.11ID:???
>>178
インデックスあたってないな
0182nobodyさん2011/08/02(火) 00:19:31.86ID:???
一概にDBとは限らないしslowqueryくらいは潰してるだろうから
まっとうにxhprofなんかでプロファイリングするのが一番だよ。
0183nobodyさん2011/08/02(火) 11:36:16.76ID:???
いや、俺は単にサーバの問題だと思うけどね
0184nobodyさん2011/08/02(火) 11:51:24.22ID:???
さくらのレン鯖のDBはゴミなんでしょ?
0185nobodyさん2011/08/02(火) 13:28:29.78ID:???
そうだよ
0186nobodyさん2011/08/02(火) 15:47:43.26ID:???
なぜ?
0187nobodyさん2011/08/03(水) 10:09:50.16ID:???
さくらレン鯖DBは容量無制限だからバイナリ置きまくり
0188nobodyさん2011/08/03(水) 10:25:33.37ID:???
InnoDB使えないのが痛い。
それだけでVPSという選択肢になる。
0189nobodyさん2011/08/03(水) 16:21:43.62ID:???
ビューキャッシュの考え方について質問です。

例えば野球の選手データのように、毎日内容が変わるものがあるとします。
新しいデータを入れたらキャッシュを削除して再キャッシュすると思うのですが、
選手データのような、種類が多くて大量データの場合もそう言う考え方なのでしょうか?
0190nobodyさん2011/08/03(水) 19:34:15.66ID:???
オイラ、野球ぜんぜん見てないから選手データというのが毎日変わるというのは知らなかったんだけどさ、アクセスされるたびに更新するもんじゃなくて、1日ごとに更新する、でいいんじゃね?

というか、そういう更新するとこって、最終更新日とかタイムスタンプついてるところもある気がする。
0191nobodyさん2011/08/03(水) 20:10:36.86ID:???
野球の選手データなら、試合をして結果が出たとき以外には変わらないだろうし、
試合があったらその都度、攻撃とか守備とかのデータを追加して、選手ページのキャッシュ更新すればいいんじゃね?
俺も野球見ないからこんな仕様でいいのか自信ないけど
0192nobodyさん2011/08/03(水) 21:49:09.98ID:???
野球の選手データはあくまで例題なんですが、
そういう頻繁に更新するキャッシュ管理はどうするのかな?と思いまして。

毎日、何百のデータを一括削除してまたキャッシュし直すって
動作的にどうなのかな?と。そう言う疑問があります。
0193nobodyさん2011/08/03(水) 22:57:53.89ID:???
>毎日、何百のデータを一括削除してまたキャッシュし直すって
それはバッチ処理。そういうのをする場合もあるが、普通のwebアプリで普通にCakePHPのキャッシュというと、アクセスしたらキャッシュするだけであって、何日も更新されない(アクセス来ないからそのまま)データもあれば、頻繁にキャッシュ更新される場合だってあるよ。

そこらへんのバランスとかどの方法がいいか?とかは一概に言えなくて、あくまでその部分を作る奴のバランス感覚とかセンスの問題だな
0194nobodyさん2011/08/03(水) 23:19:41.19ID:???
>CakePHPのキャッシュというと、アクセスしたらキャッシュするだけであって、
>何日も更新されない(アクセス来ないからそのまま)データもあれば、頻繁にキャッシュ更新される場合だってあるよ。

これで納得しました。キャッシュってそういうもんなんですね。
例えバッチ処理であれ、大量のファイルを削除→再キャッシュすれば
時間がかかるだろうから、どうするのかな?って疑問に思っていたんです。

誰もアクセスしないファイルはそのままですか。納得です。
0195nobodyさん2011/08/03(水) 23:24:31.18ID:???
最近、CakePHPはじめた者です。
hasManyとか定義するとfindしたら強制的に関連テーブルひっぱってくるSQLが走りますよね。
パフォーマンス上げるためにunbindModelってするのが1つの方法だけど、
・hasManyの定義がたくさんあったら、1つ1つunbindModelするのもしんどい。
・そもそも何かのテーブルに1つhasMany追加したら、findしてる既存のコード全部に影響が出る。
ちょっとありえないかなと・・・

そこで自分のアプローチとしては、以下のようにしようかと思います。
・hasManyとかは一切定義しない
・bindModelTable1()みたいなfunction定義
・その中で動的にhasManyを定義
・findを呼ぶ前に関連テーブルをひっぱってきたいときだけ、bindModel*()を呼ぶ
これ以外に良い方法ありますかね。
0196nobodyさん2011/08/03(水) 23:27:59.85ID:???
>>195
hasManyしないモデルを作る、ってのは?
別にテーブル名以外のモデルも作れるんだし。
0197nobodyさん2011/08/03(水) 23:34:59.10ID:???
>>196
うーん。たとえば、
・Model1にhasManyが10個定義されている
・Model2はhasManyを何も定義しない
・両方共同じテーブルを扱う
としますよね。
そうすると、hasManyのうち1つだけとか2つだけとかしたい時に、やっぱり面倒かなって。
みんなどうしてるのかな。
必要なときに必要なものだけひっぱるのがいいとおもうのだけど。

Railsはfind(:all, :include => [reviews, users])
みたいに必要なときに必要なものをって設計になってますよね。
ちょっとCakeの設計は解せないです・・・
0198nobodyさん2011/08/03(水) 23:44:05.24ID:???
>・Model1にhasManyが10個定義されている

この時点で設計が間違ってる。

みんなどうしてるのかな → 設計を見直してる
0199nobodyさん2011/08/03(水) 23:52:35.69ID:???
>>195
本質的にhasManyって、用途によって切り替えるものじゃないと思う。
モデルって普遍的なものだから、もしも本当に切り替えが必要なのだとすると、
そもそもそのモデルに定義しているリレーション自体が適当なのか?ということも検討しないと。
0200nobodyさん2011/08/04(木) 01:12:45.98ID:???
Containableで絞り込めばいいんじゃないの
0201nobodyさん2011/08/04(木) 02:51:02.47ID:???
10個は物のたとえです。hasMany,hasOneとかあわせて5くらいは可能性としてありますよね?
みんな必要なくてもhasManyとかでひっぱってくるがままにやってるのかな。
パフォーマンスとか気にし過ぎなのだろうか。

気になるのはモデルにhasManyを1つ追加しただけで、
既存のfind呼び出しの挙動が変わる可能性があるということ。
本番運用してると結構怖い気がするのだけど・・・
0202nobodyさん2011/08/04(木) 11:13:12.20ID:???
recursiveで対応できるところはして
できないところはbindModel, unbindModelかな。
それでもだめなときは、joins使うな。おいらなら。
0203nobodyさん2011/08/04(木) 11:53:06.11ID:???
いやだから>>200 の言う通りだろ
02041952011/08/04(木) 14:53:18.58ID:???
>>200 >>203
おお、こんな機能がありましたか。すみません。解決です。
0205nobodyさん2011/08/05(金) 12:21:21.48ID:???
俺はパフォーマンスを気にするなら、hasManyを一切使わないで開発してる
必要な時のみ自分でJOINする
結局手間暇考える時間トータルでこれは一番効率良かった
0206nobodyさん2011/08/05(金) 13:41:03.54ID:???
秀和システムの本を丸移ししてるのですが、エラーが出ます。
Call to a member function event() on a non-object
どこがおかしいのでしょうか。

<?php echo $html->script('prototype',array('inline'=>false)); ?>
<?php
$script =<<< EOL
function testFunc(str){
alert("you clicked \""+str+"\"!");
}
EOL;

echo $html->scriptBlock($script,array('inline'=>false));

echo $html->div(null,'Event Test!',
array('id'=>'click_div','style'=>
'background-color:#aaffaa'));

echo $javascript->event('click_div','click',
'testFunc("click_div")',array('inline'=>true));
?>
0207nobodyさん2011/08/05(金) 14:13:35.15ID:???
>>206
まずエラーメッセージを読もう。
「メンバ関数event()とか呼べねえよ」

関数event()が無いの?
スペルミスで呼び出せない?
それともオブジェクト(のインスタンス)が無いの?

というように調べて行って下さい。
ここまではPHPの基礎的な事。

じゃあ、この場面でオブジェクトを使えるようにするのはどうするの?
てのがcakePHPの話。

せっかくの夏休みだからちょっと考えてみて。
0208nobodyさん2011/08/06(土) 01:09:49.78ID:???
$script =<<< EOL
function testFunc(str){
alert("you clicked \""+str+"\"!");
}
EOL;

それより、このコーディング思想てどうなの?
0209nobodyさん2011/08/06(土) 02:23:15.19ID:???
$javascriptヘルパーの動作のお勉強ならいいんじゃないの?
つってももうdeprecatedだけど。
0210nobodyさん2011/08/09(火) 09:53:22.94ID:???
modelのsaveメソッドで保存した時、saveの戻り値の配列にinsertされたidを入れて欲しいんだけど・・・
ビヘイビアとかでやってくるのないかな。
0211nobodyさん2011/08/09(火) 10:51:41.99ID:???
こんな感じ?
動かしてないけど

function save($data = null, $validate = true, $fieldList = array()) {
if (parent::save($data, $validate, $fieldList)) {
return $this->id;
}
return false;
}
0212nobodyさん2011/08/09(火) 11:27:51.56ID:???
afterSave()で。Behaviorで。
<?php

class InsertIdBehavior extends ModelBeavior {

public function afterSave($model, created = false) {
if ($created) {
$model->data[$model->alias][$model->primaryKey] = $model->getInsertID();
}
}

}

これぐらい自作しなさいよ。
0213nobodyさん2011/08/09(火) 23:18:40.82ID:???
>>212
すみません・・・助かります。
まだソースハックしきれてなくて、そういう小回り聞いたコードが書けないので。
0214nobodyさん2011/08/12(金) 14:33:38.57ID:???
ビューの共通関数はヘルパー
コントローラの共通関数はコンポーネント
モデルの共通関数はビヘイビア

じゃあビューとコントローラとモデル全部共通で使いたい関数はどこに置けばおkですか?
0215nobodyさん2011/08/12(金) 15:39:39.53ID:???
>>214
オレオレならlib
他の誰かが作ったモノならvendors
■ このスレッドは過去ログ倉庫に格納されています