トップページ⇒php
985コメント270KB

【PHP】フレームワーク CakePHP 15ホール目【v2.2】

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

※他フレームワークとの比較等はスレ違いです

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja

前スレ
【PHP】フレームワーク CakePHP 14ホール目【v2.1】
http://kohada.2ch.net/test/read.cgi/php/1335859124/
0079nobodyさん2013/01/08(火) 16:57:43.92ID:wT0DGdoq
大規模の定義なんてあるのか?
0080nobodyさん2013/01/08(火) 16:58:37.29ID:???
あった気がする
0081nobodyさん2013/01/09(水) 14:58:19.50ID:FsynrIWD
cakephp1.3で教えて頂きたいんですけど、
routes.phpで、携帯サイトのみ以下の一文を付けたいのですが、
routesではhelperも使えないので判別に困っています。
helperが使えたらktaiライブラリを使っているので一発なのですが…
なにかいい手はないでしょうか? お願いします。

Router::connectNamed(true, array('argSeparator' => '~'));
0082nobodyさん2013/01/09(水) 15:20:28.91ID:???
>>81
routes.phpにユーザーエージェントを判別するコード書いて
PC以外のアクセスにはconnectNamed指定したら良いんじゃないか?
0083nobodyさん2013/01/10(木) 06:18:15.98ID:???
1.3.15を使っています。
アソシエーションでconditionsを使う場合と使わない場合があります。
(例えば、非公開の投稿件数を表示する・しない 場合など)

今はコントローラーで、
一旦unbindModelをしてbindModelで再定義しているのですが、
モデル内で分岐させる方法はないでしょうか?
0084nobodyさん2013/01/10(木) 12:08:13.10ID:???
別名でもいっこアソシエーションセットすればいい
んで、いるアソシエーションのみcontainで指定して引っ張る
0085nobodyさん2013/01/10(木) 23:33:47.63ID:???
アソシエーションのとこのconditions書いたこと無いんだけど、
それfind()に渡すパラメーターで表現できないの?
0086nobodyさん2013/01/11(金) 00:55:23.76ID:???
自動で関連モデル引っ張って来てくれる時に条件付与してくれるってだけだと俺は思ってるけど
それでも便利じゃん
0087nobodyさん2013/01/11(金) 03:58:11.98ID:???
>>86
それだけかぁ。
なら別名同一モデルよりはcontainに書きたいな。
0088nobodyさん2013/01/11(金) 05:59:02.49ID:???
その場限りの条件なのか、モデル定義の根幹に関わる条件なのか。
それだけじゃないの?
0089832013/01/11(金) 11:42:41.15ID:???
>>84
それすると書く量や修正箇所が増えるんですよね・・。

>>85
自分はバーチャルフィールドにしているので、
find側でアソシエーションの条件は決められないっぽいです。
それができるとかなり便利なんですけどね。

>>88
どちらかというとその場限りですね。
「非公開の投稿件数を表示」って、管理画面で確認する程度ですし。
0090nobodyさん2013/01/11(金) 12:39:05.49ID:???
>>89
バーチャルフィールドって、なんか敬遠したい雰囲気だったから使ったこと無いけど、
調べたらconditionsには使えるみたいだから
contains => array(Model => array(conditions))にも使えるんじゃないの?ダメなの?
0091832013/01/11(金) 17:40:54.59ID:???
>>90
やってみたけど駄目だした
0092832013/01/11(金) 17:49:51.59ID:???
>>90
できました!コードが間違っていたようです。
containsではなくて、containでした。

対象のモデルに
var $actsAs = array('Containable');
を追加して、

findに'contain' => array('Posts' => array('conditions' => array('Posts.status' => 1))),

を追加すると、バーチャルフィールドでもconditionsが効きました。
containを教えていただいた方、ありがとうございました。
0093nobodyさん2013/01/11(金) 19:58:49.04ID:???
>>92
Containable使ってなかったのか。
これはもう必ず使っても良いくらいのビヘイビアだよ。

Modelのrecursiveプロパティと、やることが被ってるから、そこは注意が必要だけど。

class AppModel extends Model {
var $recursive = -1;
var $actsAs = array('Containable');
}
具体的には必ずContainable使うなら$recursiveはbelongsToすら取らない設定にするのがいいけど、
bakeして作った画面はbelognsToは来ること想定してるから、
containsにちゃんと書かないといけない。
その代わりアクション毎に指定したモデルだけを取れるから、無駄なSQL発行されない。

containだったか。他がconditions, fieldsってキーだからついcontainsって書いちゃうんだよな。
0094nobodyさん2013/01/16(水) 11:49:21.14ID:???
最新の日本語のマニュアルがないからcakephpの勉強をあきらめていたんだが
本家のほうにあったなんて
検索で1番上に表示されるcakephp.jpは害
0095nobodyさん2013/01/16(水) 11:59:19.66ID:???
>>94
メンテナンスできないなら作るな、っていう感じ
0096nobodyさん2013/01/16(水) 12:05:59.61ID:???
やっぱりメンテナンスされてなかたったんだ
今日からcakephpの勉強をしたいと思います
0097nobodyさん2013/01/16(水) 12:55:44.13ID:???
Cakeろくに管理されてないから終わっとるな
英語の公式以外で入手できる情報は基本ないと思ったほうが良い
ぐぐっても出てくるのは古いゴミみたいな情報ばかり

日本語なら、なるべく新しい本を買えばまだましなのかな、多分2冊ぐらいしかないはず
0098nobodyさん2013/01/16(水) 13:48:36.02ID:???
本なんかより
英語のマニュアルと、つまったらソース読むのが一番速い上に勉強になる
0099nobodyさん2013/01/16(水) 14:37:13.70ID:???
Cakeって公式のforumないの?
Unofficialてのがあるけど、質問してもレスつかんかった
0100nobodyさん2013/01/16(水) 14:45:29.67ID:???
>cakephp.jpは害

激しく同意

あそこは潰したほうが CakePHP のためになる
0101nobodyさん2013/01/16(水) 14:49:37.64ID:???
あと、ドキュメントの翻訳を反映させるのが地獄。
自分用に何ページも翻訳あるんでよかったら使ってもらおうと思ったんだけど
糞めんどうくさいんでやめた。
そんな人結構たくさんいると思う。

チェック機構すら無い簡単過ぎる更新もどうかと思うけど、
今みたいな sphinx 形式に整形して github で pull request するなんて、
ほんの一握りのマニアしかやりたいとは思わないよ。
0102nobodyさん2013/01/16(水) 14:53:30.56ID:???
>>99
一応こちらが公式のQ&Aサイト。

http://ask.cakephp.org/

ただし、日本語で質問しても反応は絶望的だと思う。

もはやプログラマのスキルとして、つねに英語力が
プログラミング能力より先立つんじゃないかとおもうわ。
0103nobodyさん2013/01/16(水) 14:59:29.18ID:???
>>102
�dクス
過疎ってるしめちゃめちゃ重いな、やっぱCake運営っていろいろ駄目だな…
0104nobodyさん2013/01/16(水) 16:14:04.46ID:???
Cookbookの翻訳はしてる人たちは居るけど、人手不足やね。
あとベースとなる英語も、ユーザーベースで書いてるから、追従は大変。
翻訳する意欲のある人は、翻訳をすることで英語力が身につき、
もう英語読めばよくね?となってしまうとか聞いた。
0105nobodyさん2013/01/16(水) 16:40:43.25ID:???
SOHOのWeb屋やってるけどさっぱり仕事がないから
お金くれれば俺が翻訳やってやるのにな
ただではやらん
0106nobodyさん2013/01/16(水) 16:46:02.84ID:???
>>105
マニュアル本の自費出版でもしたら良いんでない?
0107nobodyさん2013/01/16(水) 16:54:17.30ID:???
そこで今はAmazonで電子書籍出版ですよ
100円ぐらいで売れてる書籍結構あるよ
0108nobodyさん2013/01/17(木) 12:47:53.30ID:???
ドキュメントの翻訳は左のツリーにないページがたくさんあるんだな。。。
まだ50%程度か。
未翻訳のページもそのままリンク張っておいてくれたらいいのに。。。
文句言う筋合いじゃないけど、なんだか細かい所でイラッと来るわ。
0109nobodyさん2013/01/17(木) 13:18:10.37ID:???
やっぱり閉鎖したほうが良いのかもな
管理できないのであれば
0110nobodyさん2013/01/17(木) 13:20:13.24ID:???
誰に抗議したらいいの?
0111nobodyさん2013/01/17(木) 13:35:14.15ID:???
>>109
翻訳サイトは cakephp.jp じゃなくて、本家 cakephp.org の一部。
なので、閉鎖とかじゃなくて単にページのHTML化の問題。

>>110
とりあえず cakephp.jp のフォーラムに書き込めばいいと思う。
0112nobodyさん2013/01/17(木) 14:10:39.39ID:???
1系の頃はcakephp.jpも役に立ってたんだけどね。
本家のask.cakephp.orgが1.3 と2の間くらいで、確か出来たけど、
あれ完成度悪いと思う。
個人的にも本家が出来たからあれに移行してやっていこうって気持ちにはなれなかった。
そして何故かユーザーは多いはずなのに両方が過疎る残念な状況に。
0113nobodyさん2013/01/17(木) 14:19:47.41ID:???
やはりシステムの出来って大事なんだね
駄目システムでも流行ることはあるとは言え、やはり大事
0114nobodyさん2013/01/17(木) 14:41:06.72ID:???
で、でた〜〜wwwOSSの有志運営のサイトにケチ付け奴〜〜〜〜wwww

おまえがやれとしか言いようが無いわ
0115nobodyさん2013/01/17(木) 14:44:36.18ID:???
機能してないサイトを残しておくだけで
「俺はオープンソースに貢献してます」って肩書きに書けるもんな
楽だよな
0116nobodyさん2013/01/17(木) 14:56:25.96ID:???
現状の問題点を述べているだけで、別にケチ付けてるわけではない
文句言う筋合いじゃないけどって書いてるでしょ
0117nobodyさん2013/01/17(木) 14:59:24.33ID:???
動いてなければ運営しているとはいえません
0118nobodyさん2013/01/17(木) 15:05:22.17ID:???
「貢献しました」「したことがあります」みたいな過去形なら可能か
0119nobodyさん2013/01/17(木) 15:55:31.40ID:???
中途半端な貢献は混乱をきたすだけだ
0120nobodyさん2013/01/17(木) 15:59:23.96ID:???
1系の頃はかなり役に立ってたけどな。
誰が運営してるのか良く分からんけど、たぶんもうCakePHPやってないんかね。
想像だけど、CakePHPから離れちゃって、
でもまるっと消しちゃうには、過去ログも溜まってるから、放置状態なんかね。
0121nobodyさん2013/01/17(木) 16:12:52.88ID:???
Cake使っている人間は多いと思うけど、まとめるのが面倒なんだと思う。
Cake以外の言語・ツールの説明サイトが少なくなった印象
0122nobodyさん2013/01/17(木) 19:02:35.58ID:???
>>121
英語のマニュアルが一番まとまってるという。。。
0123nobodyさん2013/01/17(木) 19:18:07.19ID:???
日本語でググって自分の書き込みが引っかかる率の高さ
0124nobodyさん2013/01/17(木) 19:21:42.24ID:???
あるある
自分の質問しか引っかからない時の絶望感
0125nobodyさん2013/01/17(木) 21:14:29.88ID:???
やっと引っ掛かったと思ったら誰も答えてない虚無感
0126nobodyさん2013/01/17(木) 21:29:29.93ID:???
引っかかったのが知恵袋でベストアンサーが関係ない回答のとき
0127nobodyさん2013/01/18(金) 08:59:44.64ID:???
なんだかんだでここが一番役に立つ。
0128nobodyさん2013/01/18(金) 10:03:12.31ID:???
勃たねえよ
0129nobodyさん2013/01/18(金) 12:44:04.80ID:???
>>128
愚痴りながらも答えてくれるじゃん
0130nobodyさん2013/01/18(金) 12:44:57.61ID:???
俺は答えてもらえなかった
0131nobodyさん2013/01/18(金) 13:38:03.04ID:???
CakePHPってよくブラウザーゲームで見かけるんだけどそんなに王道なの?
0132nobodyさん2013/01/18(金) 14:17:52.25ID:???
例えば?
0133nobodyさん2013/01/18(金) 15:57:43.37ID:???
よく見かけないけど、スライドショーのテーマで使われているのは見る
0134nobodyさん2013/01/19(土) 00:43:10.36ID:???
王道って程じゃないけど利用は多いだろうね。
なんだかんだ言ってもphpはweb系なら使われてる言語で、
そのphpのメジャーなフレームワークなんだし。
0135nobodyさん2013/01/19(土) 19:57:46.56ID:???
スライドショーのテーマ
が
なんとなくステマに認識された
0136nobodyさん2013/01/20(日) 14:00:47.28ID:???
Cakeみたいなすっトロい上にダサいFWは
無くなっていいよ。
なんだあのキモいActiveRecordもどきはw
0137nobodyさん2013/01/20(日) 14:13:40.58ID:???
わざわざこのスレ探して悪口書きに来たの?ダッサいなw
0138nobodyさん2013/01/20(日) 16:52:16.21ID:???
日本公式はつぶしてgoogleのフォーラム1本でいいじゃん
0139nobodyさん2013/01/20(日) 19:53:37.64ID:???
登録しないと書き込めない掲示板て嫌だよね
0140nobodyさん2013/01/20(日) 20:36:10.12ID:???
登録もせず何でも逃げれる体制でしか書き込みできない人も嫌だよね
0141nobodyさん2013/01/21(月) 00:18:04.57ID:???
登録する=手間がかかる=情報がそれなりに信頼出来る

って解釈もできるけど、だいたい登録制の掲示板って
常連しか集まらなくなって、新参が寄り付きにくいんだよね。
0142nobodyさん2013/01/21(月) 03:13:12.94ID:???
そんなことよりFuelPHPしよーぜ
0143nobodyさん2013/01/21(月) 04:53:21.31ID:???
登録とかめんどくせーよ。パスワード忘れるし
管理者が荒らし減らしたいだけのうんこシステム
0144nobodyさん2013/01/21(月) 10:23:14.60ID:???
twitterとかfacebookのアカウント(オープンIDだっけか?)で
ログイン出来るところもあるけど、
だいたいはログインした後に会員登録するという
二重にめんどくさい仕様になってるんだよな
0145nobodyさん2013/01/21(月) 13:22:07.22ID:???
何でCakeってfindの戻り値が只の配列なんですかぁ?
モデルのオブジェクト(の配列)返さなきゃ駄目だろ。
これ作った奴は全くもってオブジェクト指向ってものを理解してねぇんだな。
クソだクソ!
0146nobodyさん2013/01/21(月) 13:33:29.21ID:???
自分でそのように書き換えたら?
0147nobodyさん2013/01/21(月) 13:53:46.54ID:???
誰かそういうプラグイン作ってる人いなかったっけ
まったくうろ覚えだが
0148nobodyさん2013/01/21(月) 14:01:12.72ID:???
ムリにCakePHP使わないで他の使えよ
0149nobodyさん2013/01/21(月) 14:19:09.21ID:???
>>145
もう既に議論されまくってるよハゲ。
PHPのソース解析して実際にパフォーマンス計測した結果
配列にしておくべきと結論したんだよクズ。
CakePHP3になればデフォルトで選択可能になるみたいだがなクソムシ。
今はオブジェクト化ラッパーのプラグイン使えやウンコ。
0150nobodyさん2013/01/21(月) 18:43:32.93ID:???
>>149
その議論追ってみたいんだけど、URLとかある?
もしあったら貼ってくれまいか?
0151nobodyさん2013/01/21(月) 21:52:08.56ID:???
その議論は知らんが、単純に配列の方が、オブジェクトのプロパティより速い。
自分で試せるよ。データベースの返り値を模した配列とオブジェクトで試してみ。
0152nobodyさん2013/01/21(月) 22:54:41.50ID:???
>>151
配列の方がコスト低いのは分かるけどさ。
PHPのほかのフレームワークだと、オブジェクトにしてるのもあるから、
選択肢としてまったく無しじゃないと思うんだ。
そのなか、何で配列で行くことにしたのかなと思ってん。
0153nobodyさん2013/01/21(月) 23:17:20.53ID:???
>>152
自分で書いたのもう一度読め
0154nobodyさん2013/01/22(火) 08:01:00.25ID:???
だから、配列の方が速いからだろ?
そもそもオブジェクトである必然性は全くないし。
0155nobodyさん2013/01/22(火) 11:06:56.11ID:???
納得出来ないなら他のフレームワーク使えばいいだけだろ
わざわざ配列の方を採用しているところに「なんでオブジェクトにしないの?」
ってお前の主張を押し付けるのはおかしいだろ
0156nobodyさん2013/01/22(火) 11:45:09.75ID:???
お前ら何と戦ってんの?
議論があるってことは両方にメリット・デメリットがあるってことだろ。
配列を採用するフレームワークもあるし、オブジェクトを採用するフレームワークもある。
コストが低いだけで、配列がベストって状況じゃないから、
理解を深めるために、過去にあった議論を見たいと思って何かおかしいのか?
0157nobodyさん2013/01/22(火) 13:18:25.40ID:???
まぁ議論を追うことには意味があるな。英語だろうけど。レポよろ。
0158nobodyさん2013/01/22(火) 13:22:15.41ID:???
興味あるのに自分で探してもいなかったのか
0159nobodyさん2013/01/22(火) 13:22:42.68ID:nr2JMr7e
CakePHP
http://gp48.net
0160nobodyさん2013/01/22(火) 13:51:21.23ID:???
>>154
オブジェクトの必要がまったくない?
オブジェクト指向の勉強一からやり直せ。
0161nobodyさん2013/01/22(火) 14:04:59.92ID:???
オブジェクト指向と「配列のほうが早いからCakeは配列を採用している」
事と何が問題なんだ?

オブジェクト指向だからって絶対その通りしなきゃいけない決まりなんて無いだろ。
お前は頭が硬すぎるんだよ
0162nobodyさん2013/01/22(火) 14:53:37.91ID:???
オブジェクト指向では配列は使ってはいけないとでも言いたいの?
findの戻り値がオブジェクトだったら、そのオブジェクトは具体的にどんなメソッドを持っていて
配列よりどう便利なの?
0163nobodyさん2013/01/22(火) 16:45:51.69ID:???
>>162
戻り値はオブジェクトの場合とオブジェクトの配列の場合があるだろ。
オブジェクトの利点だが、人に聞かなきゃ分からんの?
Fat ModelとかDRYの原則とか理解してれば分かるはずなんだがねぇ。
0164nobodyさん2013/01/22(火) 16:46:40.64ID:???
>>162
CakeEntityの作者のブログに利点は色々書いてあるから読んでみるといいよ
0165nobodyさん2013/01/22(火) 16:57:32.71ID:???
http://d.hatena.ne.jp/basuke/20110908/1315479931
なるほどねえ
いまだとafterFindでやらざるを得ないような処理をEntityオブジェクトでやらせたり出来るって感じかな
多分便利なんだろうな
0166nobodyさん2013/01/22(火) 20:52:44.17ID:???
>>156
ほれ

http://www.1x1.jp/blog/2006/09/cakephp_array_based_ar.html

ただ、もっと詳しいエントリがあったはずなんだが見つけられなかった

確か開発者のブログだったんだけど、何年も前のことで忘れてしまったわ
0167nobodyさん2013/01/22(火) 21:37:05.39ID:???
利点()

そもそもPHPって時点でとてつもないデメリットがあるのに
0168nobodyさん2013/01/22(火) 22:04:06.66ID:???
そのデメリットを超えるぐらいのメリットがあるから使ってるんだけどな
0169nobodyさん2013/01/23(水) 10:42:04.53ID:???
cake 2.2.5です。 cakephp cookbook
http://book.cakephp.org/2.0/_downloads/en/CakePHPCookbook.pdf
の 8ページ目、

public function view($id=null) {
と書くべきところを、
public function view($id) {
と書いてしまいましたが、動作するように思われます。

「=null」にはどのような意味があるのでしょうか?
0170nobodyさん2013/01/23(水) 11:07:55.88ID:???
ただのデフォルト引数じゃないの?
0171nobodyさん2013/01/23(水) 13:24:10.39ID:???
さすがにPHPのマニュアルぐらいは読もうぜ
0172nobodyさん2013/01/23(水) 13:41:16.62ID:???
知っていればphpのドキュメントに書いてることが分かるけどすでに読む必要が無く、
知らなければ分かりにくいし、検索しにくい文法じゃないか。

http://php.net/manual/ja/functions.arguments.php#functions.arguments.default
0173nobodyさん2013/01/23(水) 14:11:39.31ID:???
>>172
それはセンスが無いかと
関数の引数の所に=が付いてるのは何でかな?と思ったら「関数」について調べる
それだけのことだよ
0174nobodyさん2013/01/23(水) 14:14:57.82ID:???
>すでに読む必要が無く、
呆れるほど基本的なことがわかってない時点で読む必要ありありなんですが
0175nobodyさん2013/01/23(水) 17:28:27.81ID:???
>>173
センスといえばそうだけど、思い当たらなかった人に、
ドキュメントのURLを貼ってやってもいいと思うんだ。
まぁphpのドキュメントはかなり充実してるから、大抵の事はあたりをつけて読めば書いてあるし、
読めばいいとは思うけど、それも知っていてこそ、だと思うんだよね。
0176nobodyさん2013/01/23(水) 17:46:32.01ID:???
ググれカスで済む所をキーワードまで付いてるのに
せっかくゆとり教育終わったのにゆとりの再生産したいのかw
0177nobodyさん2013/01/23(水) 18:05:08.20ID:???
話がらっと変えるけど、お前ら超小規模システムの場合でも
Cakeとかフレームワーク使ったりする?
例えば、テーブル1つのメールフォームとかアクセスカウンターとか。

ちょっとしたPHP+MySQLを使うとき、みんなどうしているのかな?と思って。
0178nobodyさん2013/01/23(水) 18:49:28.47ID:???
>テーブル1つのメールフォームとかアクセスカウンターとか。

さすがにそれでは使わねえなw
0179nobodyさん2013/01/23(水) 19:40:37.06ID:???
アクセスカウンターには流石に使わないと思う、
というかアクセスカウンターを作る状況がもう想像つかないけど。
テーブルあるならメールフォームには使うかな。
バリデーター使いたいし、入力内容をDBに入れるなら、
見たりする管理画面的なものも入ってきそうだし。
長く稼動すれば、検索したいだの、対応状況を付けたいだの、
要望が出てきそうだし、最初は極小規模でも、
なんだかんだ増えるんじゃないかと思った。
■ このスレッドは過去ログ倉庫に格納されています