【PHP】フレームワーク CakePHP 3ホール目【本命】at PHP
【PHP】フレームワーク CakePHP 3ホール目【本命】 - 暇つぶし2ch2:nobodyさん
08/03/14 15:46:16
>1

乙。

3:nobodyさん
08/03/14 18:11:15
アソシエーションしたモデルをfindAllなどで持ってくると、
いろんな構造のデータになるけど、どんなパターンがあるのかな?
ちょっと見にくいだろうけど、ありそうなのを組み合わせてみた。

この結果から、配列.Model.・・・、Model.Model.・・・、Model.field、Model.配列.field の
パターンに大別できると思っている。 Model.配列.配列.field なんてのは無い。

そしてキーの先頭が大文字ならモデル名、数値なら配列、
先頭が小文字ならフィールド名と判別できると思っている。

Model::aliasとかあまり使ってないんだけど、これであってる?

何の為にこれを調べているかというと、アソシエーションでごっそり取ってきた
全データの中で、特定モデルの特定の型(たとえば日付)のフィールドだけ変換したいっていう場合に
array_walk_recursiveみたいなのがあればやりやすくない?という話
その下調べ

4:3
08/03/14 18:11:43
array(
  'Model1' => array(
    'model1_field1' => '値1', 'model1_field2' => '値2',
  ),

  'Model2' => array(
    '0' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
    '1' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
  ),

  'Model3' => array(
    '0' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
    '1' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
  ),
)
これに加えて一番上が配列で始まる事もある。

5:nobodyさん
08/03/15 03:10:39
こういう学習コストを考慮しても、ありがたみがあるの?

6:nobodyさん
08/03/15 04:05:03
学習コスト < 自分で考え設計し開発するコスト

長くやっている人は、すでに自分で考え設計し開発しているから、
学習コストのほうが高いように錯覚するかもしれないが
本来は、自分でやるほうがコストは大きい。

7:nobodyさん
08/03/15 04:29:13
仕様書に機能追加や修正するだけの作業で1日が費やされた
最終的にこれをコードで処理してやらなければならないんだが
どんだけ時間かかるんだろ怖いよ

8:nobodyさん
08/03/15 04:31:23
貧乏暇無しや、この蟻地獄からなかなか抜け出せへん
気晴らしにコーラでも買いに行く

9:nobodyさん
08/03/15 08:17:47 4Bb0W2wl
で、結局どれほどの負荷がかかるとメモリ食い潰す訳?
アクセス数と処理内容は?

10:nobodyさん
08/03/15 09:48:29
>>9
うるさいなぁ。
CakePHPはメモリ不足で落ちる。何をやっても落ちる。
それだけだよ。ソースはぐぐれ。

11:nobodyさん
08/03/15 10:04:27
>>9

アクセス数とかじゃなくて、モデルのオブジェクトにしこたま
データを溜め込んだりする仕様になってるから、データ量が増えて
閾値をこえると落ちるって感じかなぁ。

初めはそんなこと考えなくてもいいと思うけど・・・

12:nobodyさん
08/03/15 12:47:39
メモリの8Mリミットオーバーのエラーを見たのは
ぶっちゃけCakePHPがはじめてw


13:nobodyさん
08/03/15 12:49:38
こんな高負荷なものは自社で運営は間違ってもしない
やるならCIを負荷を考慮して拡張していく

14:nobodyさん
08/03/15 12:53:15
>>11
アソシエーションしまくるとやばいやんw

15:nobodyさん
08/03/15 12:57:52
なんでこんな不完全なフレームワーク流行してんだよ。
流行て何でも肯定されちまうから怖いよな。
流行についていかねば、食えないから仕方ないけどな

16:nobodyさん
08/03/15 14:20:17
で、結局、どういうコードを書けば落ちるんだよ。
その具体的がまったくないよね。

これじゃウソだと思われるのが当然だし、
仕方が無い話だよね。

17:nobodyさん
08/03/15 14:21:14
>>15
> なんでこんな不完全なフレームワーク流行してんだよ。

世の中に完全なフレームワークは無い。
もしあったとしたら、そのフレームワークは
バージョンアップしない。

18:nobodyさん
08/03/15 14:25:44
なんでメモリ不足で落ちるということを
信じてもらえないのだろう?

俺、何もしてないのに・・・

19:nobodyさん
08/03/15 14:47:28
笑い殺すきかw 何もしていないから信じてもらえないんだろw

メモリ不足で落ちるということを証明する義務があるのに、
それを証明しない、何もしないから信じてもらえない。

20:nobodyさん
08/03/15 15:39:59
>>19
他人の作ったプログラム内でHello word書いて落ちるんだから
そう簡単には証明できねーよ、素人発言にも度が過ぎる

21:nobodyさん
08/03/15 15:44:29
メモリオーバーのエラー文が出てるんだから
証明てエラー画面のキャプチャー画像とれってことか?w

22:nobodyさん
08/03/15 15:47:01
20に同意
19はPHPのことあまり知らなさそうな感じが・・・

23:nobodyさん
08/03/15 15:48:52
たしかにwの数と頭の悪さは比例するからな

24:nobodyさん
08/03/15 16:33:57
自演ワロタw

>>20
そう簡単に証明できない?

なぜ? 簡単にメモリ不足になるんじゃなかったのか?

自分で言っていて矛盾に気づかない?

25:nobodyさん
08/03/15 16:43:49
>>21
証明とは、他人がやっても再現できるだけの
コードや環境設定に決まっている。

Hello worldぐらいなら君でも掲示板にもかけるはずだが?


26:nobodyさん
08/03/15 17:14:17
とりあえずphpinfo()と問題のコントローラだけ貼ってみ

27:nobodyさん
08/03/15 17:23:01
>>25
常識の観点がずれてる


28:nobodyさん
08/03/15 17:24:29
>>24
激しく意味不明なんですが。。。

29:nobodyさん
08/03/15 17:26:40
「落ちる」を「俺は空を飛べる」に置き換えてみるとどうだろう。

30:nobodyさん
08/03/15 17:28:21
>>25
証明とか言葉の使い方がおかしい
技術者の使う言葉じゃねーな

31:nobodyさん
08/03/15 17:29:55
小学生がよく証明しろとか証拠みせろとかよくいうけど
そのレベルだろうな

32:nobodyさん
08/03/15 17:31:24
>>29
どんななぞなぞですか?

33:nobodyさん
08/03/15 17:32:16
他人に作ってくれと言われるサイトだと、すんなりできあがるのに。

自分のサイトを作ろうと思うとこだわりすぎてなかなか開発が進まない。

大工さんは自分の家を建てようとするとこだわりすぎて会社がつぶれるってこともあるらしいけど。

わかりますかね?この気持ち。

34:nobodyさん
08/03/15 17:33:07
遠まわし表現すぎてコミュニケーションレベルが激しく低いんですが

35:nobodyさん
08/03/15 17:39:44
なんかめんどくさいから別の話して↓

36:nobodyさん
08/03/15 17:44:25
インターバル2分以内わろた

37:nobodyさん
08/03/15 18:11:15
PHP4でメモリ8MB(デフォルト)で作っているけど、
メモリ不足になったこと無いんだが?

作り方が悪いんじゃね?

38:nobodyさん
08/03/15 18:17:57
すごいなこれw で、今は書き込みすぎですサルさん
とか言うのが出て書き込めない?

27 :nobodyさん:2008/03/15(土) 17:23:01 ID:???
28 :nobodyさん:2008/03/15(土) 17:24:29 ID:???
29 :nobodyさん:2008/03/15(土) 17:26:40 ID:???
30 :nobodyさん:2008/03/15(土) 17:28:21 ID:???
31 :nobodyさん:2008/03/15(土) 17:29:55 ID:???
32 :nobodyさん:2008/03/15(土) 17:31:24 ID:???
33 :nobodyさん:2008/03/15(土) 17:32:16 ID:???
34 :nobodyさん:2008/03/15(土) 17:33:07 ID:???


39:nobodyさん
08/03/15 19:16:04
そんな糞フレームワークなら、公開すらされなそうなもんだが、なんで世に出てるの?
開発元は認識してないバグなの?

40:nobodyさん
08/03/15 19:21:27
symfonyでよくメモリ不足に陥ってこのページ見つけた。
URLリンク(www.sooey.com)

memory_get_peak_usageでメモリ使用料を調べられるが、
それでCakePHPを調べたら、使用量は4M程度だったよ。

symfonyよりは少ないね。

41:nobodyさん
08/03/15 19:59:52
セットアップして空のアクション実行してview(+layout)を表示する。

php 5.2.5
cake 467.5KB, symfony 674.6KB

フレームワークとしてはデフォルトでこんなもんなんだから
メモリ不足というのはアプリケーションの実装の問題だと思うのだが。
DB周りとか、大抵使われるアドオン・プラグインとかも含めないとなんとも言えないってのはあるけど。


42:nobodyさん
08/03/15 21:05:39
フレームワークが糞なんじゃなくてメモリ不足云々言ってるやつが糞
メモリ不足とか言ってる香具師はどんな糞コード書いてるの?w

43:nobodyさん
08/03/15 21:06:39
>>41
その数字はデバッグ出してんの?説明不足すぎやで

44:nobodyさん
08/03/15 21:11:12
他人の書いたコード利用するくらいだから
42も含めて、みんな糞コードくレベルやろ
CakePHPで糞コード書くとメモリ不足になる確率は高いわな



45:nobodyさん
08/03/15 21:13:30
どう考えてもフレームワークが糞としか考えられん
相当に意識して糞コード書かないと8Mオーバーはむずいよ

46:nobodyさん
08/03/15 21:16:24
メモリ不足ならんやつはレンタルサーバーでデフォでメモリ無制限なってんの気づけよw

47:nobodyさん
08/03/15 21:17:54
そんなシビアに実装しないとメモリ不足になるんか
ろくでもないフレームワークやな

48:nobodyさん
08/03/15 21:19:20
初心者が無限ループ書きまくっても8M越えはむずいで

49:nobodyさん
08/03/15 21:24:48
PHP5あたりからメモリ食うような仕様になってんか
てことはPHP4つかってるやつだなメモリ不足おきんのは

50:nobodyさん
08/03/15 21:26:39
PHP 5.2.1ではさらにリミットが128Mまで引き上げらたんだってよ!
リミット8MのままPHP 5.2.1使えばメモリ不足になる可能性は高いわな


51:nobodyさん
08/03/15 21:34:35
>>45
> 相当に意識して糞コード書かないと8Mオーバーはむずいよ
簡単だよ。

たとえば、8Mを超えるようなファイルを受信したり、
また出力すればいいだけ。

っていうか、もうすでに8Mにはならないという結論がでている
話なんかどうでもいいんだがね。

52:nobodyさん
08/03/15 21:36:48
>>50
それが答えだろう。PHP5でメモリ使用量が大幅に増えて
それに伴って、デフォルトのリミット値も増えているのに、

PHP4からアップグレードしたとかでPHP4の設定のまま使っている奴が
メモリ不足と出ているだけ。

フレームワークではなく、PHPの問題。

53:nobodyさん
08/03/15 21:37:19
> PHPの問題
ただしくは、PHPとそれを使っているユーザーの問題。

54:nobodyさん
08/03/15 21:38:08
どうやら頭の中のメモリが不足してるヴォケが多いようだなw

55:nobodyさん
08/03/15 21:38:50
43 :nobodyさん:2008/03/15(土) 21:06:39 ID:???
44 :nobodyさん:2008/03/15(土) 21:11:12 ID:???
45 :nobodyさん:2008/03/15(土) 21:13:30 ID:???
46 :nobodyさん:2008/03/15(土) 21:16:24 ID:???
47 :nobodyさん:2008/03/15(土) 21:17:54 ID:???
48 :nobodyさん:2008/03/15(土) 21:19:20 ID:???
49 :nobodyさん:2008/03/15(土) 21:24:48 ID:???
50 :nobodyさん:2008/03/15(土) 21:26:39 ID:???

またこいつかw

56:nobodyさん
08/03/15 21:40:39
あはは、どういうコードでメモリ不足と出るということを
記憶する脳のメモリもないということか。うまいなぁ。

メモリ不足にるというのなら、そのコードを覚えてここで書けよw

57:nobodyさん
08/03/15 21:41:32
メモリ使用量で言えばsymfonyのほうが圧倒的に多い
そしてsymfonyは処理速度も最悪

58:nobodyさん
08/03/15 21:44:17
>>48
> 初心者が無限ループ書きまくっても8M越えはむずいで

お前はプログラミング素人だな。

そもそも無限ループじゃメモリ使用量は増えないだろ。

ループの中にメモリを消費していくコードが含まれていれば
メモリ使用量は増えるが、それだと難しいという話にはならない。
時間がたてばいずれ8Mを超える。

59:nobodyさん
08/03/15 21:45:25
>>57
symfonyはCakePHPだと配列のデータが
オブジェクトになっているからね。
それは仕方が無い話。

60:nobodyさん
08/03/15 21:52:56
>>54のカキコが的を突いていてオモロス

61:nobodyさん
08/03/15 21:58:18
脳内メモリが不足している人におすすめのフレームワーク
スレリンク(php板)

62:nobodyさん
08/03/15 22:01:51
>>59
オブジェクトの方がメモリ食わんよ


63:nobodyさん
08/03/15 22:02:57
アホしか書き込みせんから、時間の無駄じゃこのスレ

64:nobodyさん
08/03/15 22:03:54
フレームワークが糞だから住人も糞が集まる
これは仕方のないこと

65:nobodyさん
08/03/15 22:07:39
CakePHPは使ってるやつは
脳内のメモリが不足してるという結論になりました


66:nobodyさん
08/03/15 22:10:56
こんなメモリ食うフレームワークを採用してる有名サイトあるの?www
どうでもいいクライアント用のフレームワークだろwww

67:nobodyさん
08/03/15 22:12:26
>>65
CakePHPは使ってるやつは    ×
CakePHPを使ってるやつは     △
CakePHPを糞と言ってるやつは  ○

脳内メモリが不足してくると日本語もおかしくなっているという法則

68:nobodyさん
08/03/15 22:12:32
CakePHPて小規模フレームワークのくせに
なんでsymfonyとメモリ不足量の競い合いしてんだよw


69:nobodyさん
08/03/15 22:15:21
>>66
つ p://cakephp.seesaa.net/article/30805902.html


70:nobodyさん
08/03/15 22:16:09
どうでもいいクライアントには丁度いいフレームワークだよ



71:nobodyさん
08/03/15 22:22:04
すぐメモリ不足おこすのはCakePHPの問題だ
どんな糞コード書いてても
CakePHP以外でこんなこと今までおきなかった

72:nobodyさん
08/03/15 22:26:10
脳内メモリが不足してる香具師は何でも他人の所為にする事しか出来ないようだな

>>71
じゃあそのCakePHPの場合だけ落ちるっていう糞コードをさっさと書けよボンクラ

73:nobodyさん
08/03/15 22:31:54
どんだけ最低最悪な糞コード書いてても
symfony,CI,mojaviは落ちなかったけど
CakePHPだけはどんなコード書いてもすぐ落ちる
最悪なフレームワークです


74:nobodyさん
08/03/15 22:34:03
>>73
脳内メモリが著しく枯渇してるモマエにはすぐ上に書いてある文章も読めないのか?(藁

75:nobodyさん
08/03/15 22:35:35
CakePHPの採用サイトみたけど有名なとこはないな
信用の無いフレームワークですね

76:nobodyさん
08/03/15 22:37:25
ひとりごとにやけにかみつくメモリ不足の方がおられますね

77:nobodyさん
08/03/15 22:39:22
CakePHPだと小規模向けのサイトじゃないと無理か
だったらCI使ってた方がいいやん
何なのCakePHPの存在意義て?

78:nobodyさん
08/03/15 23:01:27
CI使ってみたいんだけどどんな感じ?

79:nobodyさん
08/03/15 23:10:48
>>76
全世界の人間に見えるように書いてるもんに独り言も糞もあるかよw
さっさとCakePHPの場合だけ落ちるコードを書いてみろや

80:nobodyさん
08/03/16 00:28:57
>>78
激しく糞。


つーか、ここでCIのことを語りだすやつは、
CakePHPがメモリ不足になりやすいとデマ流している奴だから。


81:nobodyさん
08/03/16 00:29:46
CI厨、CakePHPに激しく嫉妬(笑)

82:nobodyさん
08/03/16 00:33:53
CakePHPのメモリ不足をまだデマだと思ってるやつがいるなんて信じられん

83:nobodyさん
08/03/16 00:37:26
デマという言葉がいやなら、

メモリ不足になるというコードがでていないのに、
メモリ不足になるというコードが存在すると主張している
と言い換えてもいいけど?

こっちなら間違ってないでしょ?

84:nobodyさん
08/03/16 00:41:22
CI厨 必死(笑)

85:nobodyさん
08/03/16 00:42:48
>>73
> どんだけ最低最悪な糞コード書いてても
> symfony,CI,mojaviは落ちなかったけど

常識で考えて、ありえない話。
メモリ制限8Mで10Mのデータをメモリに読み込むような
プログラムを書けば絶対落ちる。

マジレスしたらだめなのか?w

86:nobodyさん
08/03/16 00:49:54
結論

Q : cakephp メモリ不足になるんですが

・他のフレームワークを使う
・フレームワークを使わずコーディングする
・ticket 投げてメモリを喰わないように cakephp を作ってもらう

どれかを選らんで下さい。

87:nobodyさん
08/03/16 00:52:50
>>86
必死wwwwwwwww

88:nobodyさん
08/03/16 00:54:42
ticketを投げようにも、再現コードがでていないから
投げようがないな。デマといわれて終わるだけだ。

悔しいなぁ。

なんで、なんでメモリ不足になるという
証拠がないんだよ! ありえない。

これじゃCakePHPを叩けない!

89:nobodyさん
08/03/16 00:58:35
ticketだしますから、
メモリ不足になるという
再現コードお願いします。

それがないと信用してもらえません><

90:nobodyさん
08/03/16 01:10:03
なんか必死に書き込んでるのがいるwww

91:nobodyさん
08/03/16 01:11:43
再現コード厨きてんねw

92:nobodyさん
08/03/16 01:15:35
はやく再現コードかきこんでねw

93:nobodyさん
08/03/16 01:15:51
hello wordでもメモリ不足でおちる
CakePHPはそういうフレームワーク


94:nobodyさん
08/03/16 01:17:05
hello worldって何かしってるのかな?
知っていれば落ちるはずがないことがわかるはずなんだが。
それがわからないってことは馬鹿ということだよ。

95:nobodyさん
08/03/16 01:18:12

大きすぎるうそは逆効果だと思うんだが(笑)

96:nobodyさん
08/03/16 01:18:14
echo"92の必死ぶりがイタイデス";
これでメモリ不足で落ちます
CakePHPはこんなフレームワークです
使うのはやめましょう。クライアントがかわいそうです

97:nobodyさん
08/03/16 01:19:44
echo"92の必死ぶりがイタイデス";

ためしたけど落ちなかったよ。

98:nobodyさん
08/03/16 01:20:34
だから何も書いてなくてもデバッグ出力すると落ちるんだよボケ!!

99:nobodyさん
08/03/16 01:20:46
ためしたのかよw

やる前から落ちないってわかるwww

100:nobodyさん
08/03/16 01:21:56
レンタルサーバーで落ちるわけねーだろうがよ

101:nobodyさん
08/03/16 01:22:13
何も書かないで、どうやってデバッグ出力なんかするの???

っていうかデバッグ出力するってどういうこと?

他のフレームワークと勘違いしてね?
きっとそのフレームワークだよ。メモリ不足で落ちるというのは。

102:nobodyさん
08/03/16 01:22:44
落ちないように業者が設定してくれてんの、わからんの?

103:nobodyさん
08/03/16 01:24:23 EXDzIJ8M
あー。なんか面白いことになっているな。
メモリ不足で落ちるとはじめに言ったのは俺なんだが、
あれ勘違い。俺のバグだった。

で、それに便乗して落ちる落ちる言っている奴がいるのか?

104:nobodyさん
08/03/16 01:24:44
だからCakePHPは使いものにならないんだよ

105:nobodyさん
08/03/16 01:25:25


106:nobodyさん
08/03/16 01:26:34
メモリ不足でよく落ちるから使いものにならんてこと

107:nobodyさん
08/03/16 01:27:00
落ちないよ?

108:nobodyさん
08/03/16 01:27:46
落ちなければこんなとこ書き込めねーよ

109:nobodyさん
08/03/16 01:28:08
落ちてないけど、書き込めるよ?

110:nobodyさん
08/03/16 01:28:27
おまえが落ちなくても俺は落ちてんだよ

111:nobodyさん
08/03/16 01:28:49
お前も落ちてないよ

112:nobodyさん
08/03/16 01:29:14
なんでこんなに糞なんだよ、メモリやけに使いやがって

113:nobodyさん
08/03/16 01:29:31
糞じゃないよ。メモリも使わないよ。

114:nobodyさん
08/03/16 01:30:21
hello word書いてメモリオーバーになったのは
CakePHPがはじめてだよ

115:nobodyさん
08/03/16 01:30:42
なんでこんなことになるん?

116:nobodyさん
08/03/16 01:30:53
お前、メモリオーバーになってないよ。

117:nobodyさん
08/03/16 01:31:19
>>115
CI厨のデマだからという結論らしいです。

118:nobodyさん
08/03/16 01:33:07
CakePHP重いと思わんの?サクサクしてる?w

119:nobodyさん
08/03/16 01:33:16
これで落ちなかったら俺の負けでいいよ。

class TestController extends AppController {
  var $name = 'Test';

 function index() {
  echo 'Hello World';
 }
}

120:nobodyさん
08/03/16 01:33:58 EXDzIJ8M
>>119
マジ落ちたwwww

121:nobodyさん
08/03/16 01:34:19
俺も落ちたね。

122:nobodyさん
08/03/16 01:34:23
落ちなかった

123:nobodyさん
08/03/16 01:35:06
墓穴?

103 名前:nobodyさん[] 投稿日:2008/03/16(日) 01:24:23 ID:EXDzIJ8M
あー。なんか面白いことになっているな。
メモリ不足で落ちるとはじめに言ったのは俺なんだが、
あれ勘違い。俺のバグだった。

で、それに便乗して落ちる落ちる言っている奴がいるのか?

120 名前:nobodyさん[] 投稿日:2008/03/16(日) 01:33:58 ID:EXDzIJ8M
>>119
マジ落ちたwwww


124:nobodyさん
08/03/16 01:36:23
>>119
メモリ1GBのLinuxにPHP4.5を入れているが、落ちたよ。


125:nobodyさん
08/03/16 01:36:34
とにかくhello wordだけでメモリ不足で落ちるのはホントだからな

126:nobodyさん
08/03/16 01:36:55
絶対信じろよ

127:nobodyさん
08/03/16 01:38:20
CakePHPはこんな糞フレームワークなんですよ!
結論がでたね

128:nobodyさん
08/03/16 01:38:32
で、それにかわるフレームワークなんだが、
CodeIgnitor なんてどうかな?

129:nobodyさん
08/03/16 01:39:10
CodeIgnitor。いいよね!

130:nobodyさん
08/03/16 01:41:35
いいんだよ!!ね!ねって!

131:nobodyさん
08/03/16 01:43:44
↓次の質問どうぞ

132:nobodyさん
08/03/16 08:13:02
何この流れ。くだらねえ。

133:nobodyさん
08/03/16 12:34:32
話し戻していいですか?

アソシエーションしたモデルをfindAllなどで持ってくると、
いろんな構造のデータになるけど、どんなパターンがあるのかな?
ちょっと見にくいだろうけど、ありそうなのを組み合わせてみた。

この結果から、配列.Model.・・・、Model.Model.・・・、Model.field、Model.配列.field の
パターンに大別できると思っている。 Model.配列.配列.field なんてのは無い。

そしてキーの先頭が大文字ならモデル名、数値なら配列、
先頭が小文字ならフィールド名と判別できると思っている。

Model::aliasとかあまり使ってないんだけど、これであってる?

何の為にこれを調べているかというと、アソシエーションでごっそり取ってきた
全データの中で、特定モデルの特定の型(たとえば日付)のフィールドだけ変換したいっていう場合に
array_walk_recursiveみたいなのがあればやりやすくない?という話
その下調べ

134:nobodyさん
08/03/16 12:34:56
array(
  'Model1' => array(
    'model1_field1' => '値1', 'model1_field2' => '値2',
  ),

  'Model2' => array(
    '0' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
    '1' => array(
      'model2_field1' => '値1', 'model2_field2' => '値2',
    ),
  ),

  'Model3' => array(
    '0' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
    '1' => array(
      'model3_field1' => '値1', 'model3_field2' => '値2',
      'Model4' => array(
        'model4_field1' => '値1', 'model4_field2' => '値2',
      )
    ),
  ),
)
これに加えて一番上が配列で始まる事もある。

135:nobodyさん
08/03/16 14:39:55
落ちる落ちるってデマ情報流してるやつは何なの?

>>119-121
それで落ちるってphp.iniにどんな設定しとるんや?
まずは脳内メモリを増設したほうがいいんじゃね?(プ

136:nobodyさん
08/03/16 16:55:47
>>135
脳内メモリ増設したいんやが、空きが無いんや

137:nobodyさん
08/03/16 17:21:50
>>136
すでについとる容量の低いやつを全部外して
デュアルチャネル対応の容量大きいやつを増設したらええんや

そしたらCakeもサクサク、オマエの小汚い脳内もサックサク~(* ^ー゚)

138:nobodyさん
08/03/16 17:40:40
>>137
おまえはCPU変えた方がよさそうだなw

139:nobodyさん
08/03/16 22:05:49
>>138
ツマンネー

140:nobodyさん
08/03/16 22:11:05
先輩方、マジ質問なんですが、自分はdreamweaver を使ってます。

ecripse って最近よく聞くんですが、 dreamweaver よりも開発効率いいんでしょうか。

よろしくお願いします。

141:nobodyさん
08/03/16 22:46:20
>>140
スレリンク(php板)

142:nobodyさん
08/03/16 22:54:10
Javaならエクリプス必須だけどPHPは秀丸で充分じゃね?関数少ないし。

143:nobodyさん
08/03/16 23:03:52
PHPフレームワークのCakePHPに相次ぐ批判の声
スレリンク(news2板)

とりあえず「脳内メモリがや~」とか言ってる人は読んどいたら?

144:nobodyさん
08/03/17 00:45:30
>>119
私もこのコードを書いたら、彼女が出来ました!

145:nobodyさん
08/03/17 01:02:50
ここいる住人は全員初心者ばっかりくせーw

146:nobodyさん
08/03/17 01:03:05 BkHzbTOg
gzipの方のアーカイブって変なフォルダ入ってね?あれ何に使うの?

147:nobodyさん
08/03/17 01:06:46 BkHzbTOg
>>119
落ちなくて困っているんだけど、どうすればいい?

148:nobodyさん
08/03/17 01:23:22
結局CakePHPは糞フレームワークという結論でよろしいですね!


149:nobodyさん
08/03/17 01:23:58
>>148
ノープロブレム

150:nobodyさん
08/03/17 01:25:35
よろしいから、どっか行け、な。使わなくていいから。マジで。

151:nobodyさん
08/03/17 01:27:02
このスレを見てたら大手が採用しない理由がわかってきたw


152:nobodyさん
08/03/17 01:34:16
とりあえずCakePHPはよく落ちる糞フレームワークということを
みんなで中小企業にアピールしようぜ。
そしてもう二度と同じ被害者を生まないためにも

153:nobodyさん
08/03/17 01:44:22
嫉妬乙

154:nobodyさん
08/03/17 01:59:39
いや、マジで駄目だから使わないほうがいい。
使うのは駄目な俺だけでいい。

155:nobodyさん
08/03/17 02:09:58
この流れで落ちるとかいっても逆効果だろw
誰も信用してないよ。

156:nobodyさん
08/03/17 06:47:17
モデルにバリデーションとアソシエーションをがっつり入れた
超みにくいよw

157:nobodyさん
08/03/17 07:00:18
あぁ。だから俺はバリデーションをYAMLに書いて、
それを読み込むようにしている。

158:nobodyさん
08/03/17 15:09:42
フォームでURLの入力補助として
デフォルト値にhttp://をつけると
バリデーションで他の項目がひかかったときに
URLリンク(yahoo.co.jp)と入力していても
またhttp://のデフォルト値がはいる
デフォルト値は最初の画面だけ挿入したい場合はどうすればいいのですか

$form->input('TestUser.url', array('value'=>'http://')

159:nobodyさん
08/03/17 15:29:54
>>141
>>142

ありがとうございます!

160:nobodyさん
08/03/17 16:22:23
たった3日で150レスだと…?

161:nobodyさん
08/03/17 16:39:49
>>158
その辺て自動でやってくれないんだっけ?
再編集のときの話だったら、データ構造を見て本来はDBから持ってくるデータを用意しておいてあげればいい
またはデータが無いと判断したときだけ、value入れればいいんじゃね

162:nobodyさん
08/03/17 18:22:09
>>158
タイムリーだなw
俺も今同じようなことをやっていた。

最初はそのように、$form->inputに書いていたが、
同じようにダメだと気づいて、

コントローラで、(↓こんな感じ。適当に書く)
if(!empty($this->data)) {
 if($this->Model->save($data)) {
  ・・・
 } else {
  ・・・
 }
} else {
 $this->data['Model']['url'] = 'http://';
}

本当についさっき書いたコードなので、これで問題ないか深く考えていない。

163:nobodyさん
08/03/17 20:25:58
コントローラでやることじゃないなー

164:nobodyさん
08/03/17 21:47:14
>>163
プログラマならコードで示してね。

165:nobodyさん
08/03/17 22:07:27 6Wsl0FQ6
scaffoldでエラーが出るのですが、何が原因か教えてもらいたいです。

エラーの内容は
Warning: Invalid argument supplied for foreach() in /home/~~/htdocs/cake/cake/libs/controller/controller.php on line 666
Warning: Invalid argument supplied for foreach() in /home/~~/htdocs/cake/cake/libs/controller/controller.php on line 801

コントローラとモデルはscaffoldのみのシンプルなものです。


166:nobodyさん
08/03/17 22:16:46
>>165
まず該当箇所を見てみればいいと思うが

167:nobodyさん
08/03/17 22:21:02
>>162
Viewにこう書くのはどう?

if(empty($this->data['TestUser']['url'])) $this->data['TestUser']['url']='http://';
echo $form->input('TestUser.url', array('label'=>'*URL','size'=>50,'value'=>$this->data['TestUser']['url']));

168:nobodyさん
08/03/17 22:28:21 6Wsl0FQ6
666:foreach ($objRegistryModel->_tableInfo->value as $tabl) {
801:foreach ($objRegistryModel->hasAndBelongsToMany as $relation => $relData) {
でした。何なんでしょうか。アソシエーションでしょうか。

169:nobodyさん
08/03/17 22:52:12
>>157
この辺りの辺、サンプルある?
もしあったら見せて欲しい。

昨日あたりからcakePHPを使い初めたのだけど、たしかにWebにあった
チュートリアルに沿って作ると、モデルがヴァリデーションだらけに
なりそうなので。

170:nobodyさん
08/03/18 00:22:51
>>169
YAMLの使い方ググれよ

171:nobodyさん
08/03/18 00:52:36
>>164
いちいちコード書かないとわからんのか
設計とかパターンとか学べ


172:nobodyさん
08/03/18 03:38:03
>>164
一行レスとか煽りに一々反応すんなよ
荒れるだけだよ

173:nobodyさん
08/03/18 04:22:49
つーかこんで良いんじゃねぇの?

controler
$url = ''URLリンク(;)
$data = $this->Model->ほげほげ();
if (unko) {
 $url = $data["url"]
}
$this->set('url',$url);

view
$form->input('TestUser.url', array('value'=>$url)


174:nobodyさん
08/03/18 09:45:05 LdGu1qpa
>168のscaffoldの奴です。
bakeでいろんなテーブルを焼いてみると、まともにscaffoldが働くものもありました。
焼かれたVIEWのIndex.thtmlを見てみると、テーブルの値を表示する所で、配列の添え字が記入されていませんでした。
おそらくテーブルの定義の仕方に問題があるように思います。
テーブルの定義は、まず成功した方が
Table "public.users"
Column | Type | Modifiers
------------+------------------------+-----------
id | integer | not null
username | character varying(255) | not null
password | character varying(32) | not null
first_name | character varying(255) | not null
last_name | character varying(255) | not null

次に失敗した方が
Table "public.flash_tests"
Column | Type | Modifiers
--------+---------+----------------------------------------------------------
id | integer | not null default nextval('flash_tests_id_seq'::regclass)
count | integer | not null

です。fefaultの所は削除しても変わりませんでした。
心当たりのある方、助言お願いします。


175:nobodyさん
08/03/18 09:53:20
>>173
なにその汚ねーコードw

176:nobodyさん
08/03/18 09:54:14
>>173
それだけはありえん

177:nobodyさん
08/03/18 13:01:47
ありえんとかいってないで、
自分のコードをかけよ。

178:nobodyさん
08/03/18 13:03:45
初期値の設定は、前回入力値の設定と同じことなんだから
コントローラで設定すべきだよな。

ビューはただ表示するだけ。


179:nobodyさん
08/03/18 15:07:02
>>178
根拠の無い理由は自分の心の中でしまっとけな

180:nobodyさん
08/03/18 15:09:23
>>177
167に書いたよ、この美しいコードに反論あるんか?

181:nobodyさん
08/03/18 15:11:30
>>173
こんなコード書く奴がこのスレにいるとは
CakePHPの住人レベルて・・・

182:nobodyさん
08/03/18 15:13:24
明らかにPHP初心者がCakePHPから始めましたみたいなのが多いな
>>173を見て確信した

183:nobodyさん
08/03/18 15:20:33
ああ。ガチだな。

184:nobodyさん
08/03/18 15:59:35
最近10分以内に似たようなレスが連続で湧くな

185:nobodyさん
08/03/18 16:06:00
じゃあアンケートとります。

フォームの初期値はどこで設定すべきでしょう。

1.コントローラ
2.ビュー
3.モデル
4.モデルに初期値情報が有り、それをコントローラが取得してビューに渡す

俺は4。面倒だとか、フォームによって初期値が違う場合は1

186:nobodyさん
08/03/18 16:45:53
>>185
俺はビューかな。


187:nobodyさん
08/03/18 16:51:14
>>185
俺もビュー
管理するのが楽
コントローラーに書くとみにくくなる
ビューだと全くみにくくない、それどころか見通しがよくなる

188:nobodyさん
08/03/18 16:53:16
>>185
モデルをこれ以上見にくくするのはよくないよ
バリデータ
アソシエーション
バリデータ関数
これだけでもずいぶん見にくいのに

189:nobodyさん
08/03/18 16:54:16
コードの見渡しがよくなって
変更が楽な場所がベスト

190:nobodyさん
08/03/18 16:55:18
>>185
初心者の多いここでアンケートとっても意味が無いけどなw

191:nobodyさん
08/03/18 17:06:20
常識的に考えればビューだけど
ここは初心者が多いからね

192:nobodyさん
08/03/18 18:10:04
>>188
お前、まさか、それだけしかないんじゃないだろうな・・・
モデルは設定ファイルじゃないぞ。

ビジネスロジックを書く所がモデルだぞ。

193:nobodyさん
08/03/18 18:11:06
ビューは基本的に表示のみを行う場所。
初期値をビューで設定するのは変。

194:173
08/03/18 19:04:45
確かにてきとーに書いた部分はあるが
何でダメなの?因みにcakeは1週間ぐらいしかやってない
あとコントローラに初期値は
ロジックとviewの分離等から考えると微妙だが
めんどくさかったんだそこはごめんw

195:nobodyさん
08/03/18 19:29:58 5PAxNly0
なんでここって初心者しかいないの?

196:nobodyさん
08/03/18 19:38:40
なんでここって猿みたいに同じ事しか書けない人が多いの?

197:nobodyさん
08/03/18 20:28:19
>>193
smartyだってテンプレート側で初期値いれらるようになってる
おまえの頭が変

198:nobodyさん
08/03/18 21:23:10
>>193

携帯用サイト作るとわかると思うけどあんまりガンガン表示する内容まで
コントローラーで固めない方がいいよ。

携帯用サイト用の コントローラーまで作る羽目になるから。

199:nobodyさん
08/03/18 22:59:49
セッションって

$_SESSION[''][''] を直接使った方が早い感じがすんだけど、みんなどうしてます?

やっぱり $this->Session->read を使った方がいいんですかね。

200:nobodyさん
08/03/18 23:48:37
>>197
> smartyだってテンプレート側で初期値いれらるようになってる
入れられるようになっているからって、入れるべきということにはならないだろ?
モデルやコントローラ側で初期値入れられるようになっているんだしさ。

> 携帯用サイト用の コントローラーまで作る羽目になるから。
その理屈がよくわからん。初期値の話をしているのに
なんでもコントローラでやると拡大解釈してしてないか?

それにビューに書く場合、携帯用サイトとPC用サイトで分けるもんだから、
ビューに初期値を書いたら、コードが重複するじゃん。
だからビューだけはありえない。そう思わないか?

ちなみに、おれは初期値はモデルに書くもんだと思っているが。

201:nobodyさん
08/03/19 01:30:55
>>199
オブジェクトで呼んだ方がオーバーライドもできるし
後から制御するのが楽


202:nobodyさん
08/03/19 01:36:20
柔軟な制御をするためにデータはオブジェクト経由で呼ぶべき
オブジェクトで呼ぶことに意味がある
それは、オブジェクトにはいってるデータを
外から制御できるからだ


203:nobodyさん
08/03/19 07:53:45
>>201
>>202

cakephp やってて

「意味あるのかな・・・」と思ってましたけど、やっぱり意味があったんですね。

勉強になります。ありがとうございます。

204:nobodyさん
08/03/19 12:54:14
例えばCakePHPでブログシステムを作るとして、
ユーザ(usersテーブル)、投稿(commentsテーブル)が一対多の
関係にある時、あるviewで、
 ユーザ1
  コメント1-1
  コメント1-2
  コメント1-3
 ユーザ2
  コメント2-1
  コメント2-2
  コメント2-3
   ・
   ・

という表示をさせたいのですが、view、controllerをどう書いてよいか悩んでいます。
modelで、hasManyリレーションを貼るところ迄は合っていますか?

どこか、参考になるページがあれば教えて下さい。

205:nobodyさん
08/03/19 19:47:56
UserモデルにはhasManyプロパティを作ってcommentsを持っていることを示す。
CommentモデルにはbelongsToプロパティを作って、usersに依存していることを示す。

コントローラのアクションでUserモデルからデータを引っ張ってくる
アソシエーションによりCommentもくっついてくる。

コントローラのアクションで、引っ張ってきたデータを
ビューに詰め替える。

ビューは渡されたデータをぐるぐるして表示する。


206:nobodyさん
08/03/19 21:42:10
表示するユーザ数+1のクエリが発行されるからアクセス数の多い中規模~大規模なサービスでは使えない。
この辺言及する人が少ないのはcakeユーザのレベルが低いからだろうか。

207:nobodyさん
08/03/19 22:11:32
> 表示するユーザ数+1のクエリが発行されるから
何を言っているんだ?

自分のレベルが低いと告白しているのか?

208:nobodyさん
08/03/19 22:21:01
>>206
だって、表示するユーザ数+1のクエリが発行されないから。
誰も指摘しないのは当たり前。

209:nobodyさん
08/03/19 23:03:06 XOo5uLlV
>>205
返信ありがとうございます。

> コントローラのアクションでUserモデルからデータを引っ張ってくる
> アソシエーションによりCommentもくっついてくる。

なるほど。
きちんとリレーションを設定すれば、コントローラ側ではUserモデル
からデータを引っ張るだけで、芋づる式にcommentsを取れるんですね。

> ビューは渡されたデータをぐるぐるして表示する。

今、$usersをforeachで回してる状態なんですが、これを$usersと
$commentsの二重ループにすればオッケーですかね。
ちょっとやってみます。


>>206
論点がずれてませんか?

そもそも、具体的なアクセス数、H/Wの規模を示さないと意味のない
指摘じゃないでしょうか。
この方法だと中規模以上に向かないから、この方法を使うといいよ、
と言うのならまだ分かるのですが。

210:nobodyさん
08/03/19 23:13:10
>>207
>>208
お前らのcakeはこの時どういったクエリが発行されんの?

select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1) ...
select ... from comments where user_id in (3) ...
select ... from comments where user_id in (5) ...

211:nobodyさん
08/03/19 23:28:29
URLリンク(72.14.235.104)

そして、この findAll() で実行された SQL は以下の通り。

SELECT `Job`.`id`, `Job`.`com_id`, `Job`.`name`
FROM `jobs` AS `Job` LEFT JOIN `coms` AS `Com` ON `Job`.`com_id` = `Com`.`id`
WHERE 1 = 1 ORDER BY `Job`.`id` ASC LIMIT 10;



212:nobodyさん
08/03/19 23:42:19
belongsToじゃなくてhasManyのこと言ってるんだけど。
参照の方向が違う。

213:nobodyさん
08/03/20 00:12:41
といわれてもなぁ、

hasmanyとかconditionsにどういうSQLで
JOINするかをSQLの断片で書いているしなぁ。
JOINしているとわかりそうなものだがなぁ。

214:nobodyさん
08/03/20 00:28:36
子はJOINできないじゃん。
結局「表示するユーザ数+1のクエリが発行される」が間違ってることは示せないんでしょ。
実際やってみてクエリログ見ればすぐ分かるはずなんだが。


215:nobodyさん
08/03/20 00:37:04
>>210
素人乙!
観点がずれてるよPHPの基礎からやりなおしてね

216:nobodyさん
08/03/20 00:40:19
1回のクエリで全てが補えることに超したことはない
その代わり複雑なSQL文を書かないといけないから
CakePHPの負荷よりも生産性というスタイルに合わないがな
ループの中でクエリをぐるぐる発行しまくると負荷が高くなる

217:nobodyさん
08/03/20 00:43:11
>>215
結局こういうのが出てくるのか・・・
ほんとバカばっかだなー

それじゃ論点がどうずれてるか説明もらってもいい?
210での発言にphpの基礎は全く関係ないから、それのほうが論点ずれてると思うのだが。
んで、実際お前のcakeではこの処理でどういうクエリが発行されんの?

218:nobodyさん
08/03/20 00:47:43
>>209
よほどのことがない限り
ループの中にループは入れない方がいいよ
負荷がかかるからね。


219:nobodyさん
08/03/20 00:52:19
CakePHPのおかげで
とてつもなく負荷の高いシステムがたくさん世に出そうだな
こりゃサーバー会社が儲かるな
sakuraインターネット株でも買うか!

220:nobodyさん
08/03/20 05:31:17
1.2のpaginate機能はつかえねーな
柔軟な制御ができん、
ページリンクに検索項目のパラメーター付加できない、というか
できるけど、面倒なことしないとダメくさい
ソート項目のパラメータは標準で付加できるようだが

221:209
08/03/20 10:56:59 mwRuCB98
>>218

私の技術力だと、二重ループ以外に実現する方法が思いつかないのですが、
他によい方法があったら教えてもらえますか?

ユーザ毎のコメントを表示する機能はパスするにしても、
同様にmasManyリレーションのテーブルを親子両方とも表示したい
機会はあると思うので。


負荷という意味では、masManyの定義でlimit=>10とする事で大量の子を
取得しないように、というのは心がけています。

222:nobodyさん
08/03/20 11:48:27
>>219
もっと負荷の高いsymfonyもありますぜw

223:nobodyさん
08/03/20 12:36:12
というか、プライマリーキーで
データを取得することが
負荷が高いと思っているのかな?

JOINの方がよっぽど負荷高いですぜ。

224:nobodyさん
08/03/20 12:40:34
DB周りじゃないだろ多分


225:nobodyさん
08/03/20 12:58:50
>>210
> お前らのcakeはこの時どういったクエリが発行されんの?

こういうクエリが発行されますがなにか?

select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1, 3, 5 ) ...


226:nobodyさん
08/03/20 13:35:31
CakePHPのどんどん負荷をかけて生産性を上げなさいというスタイルが
自分の性格に合わない気がしてきた


227:nobodyさん
08/03/20 13:39:58
まだ、例のアンチが常駐しているのかw

CakePHPはメモリも食わないし、負荷も高くない。
生産性は高い。

228:nobodyさん
08/03/20 13:40:43
アンケート

1.ページ送りの絞り込み条件パラメータをセッションで持たせている
2.ページ送りの絞り込み条件パラメータをURLの後ろに繋げてる(CakePHP1.1 paginate)
3.ページ送りの絞り込み条件パラメータをURLの後ろに繋げてる(CakePHP1.2 pagination)

229:nobodyさん
08/03/20 13:45:28
>>228

4. 基本は3と同じだが、場合によってpagination等をオーバーライドして独自の条件を追加している。

230:nobodyさん
08/03/20 13:45:45
>>227
矛盾してるな。それらは反比例の関係にあるからな

231:nobodyさん
08/03/20 13:45:54
>>226
たしかに、
●自分の用途に合わせて、全てのコードとHTMLを一から作成したシステム
●作り込み部分は最小限にして、大半のコードはcakePHP任せにしたシステム
を比べると、負荷は、一から作成したシステムの方が、余分なものがない分、
軽くできるかもね。

まあそこはトレードオフの部分だから、自分に向いてないと思ったら、
cakePHP以外のやり方を模索すればいいと思うよ。

232:nobodyさん
08/03/20 13:47:58
>>230
よくわからんが、いまどき生産性の悪いほうを
選びたいのか?

233:nobodyさん
08/03/20 13:49:21
負荷が高いシステムを作っているところは
どこでもフレームワークを使っている。

234:nobodyさん
08/03/20 13:50:32
>>229

View側で
$paginator->prev()
$paginator->next()

の第2引数に絞り込み条件を配列で入れてやら無いと
URLの後ろにパラメーターが付加されてなくない?

URLリンク(localhost)
みたいなかんじ

235:nobodyさん
08/03/20 13:55:14
>>234
いまソースが手元に無くて忘れたが、CakePHP1.2でかなり改善された。
そういえば、そういうパラメータを”コントローラ”側で追加していたきもする。
コントローラーのpagination変数だったっけ?
pagination[モデル名]だっけ?
まあわすれた。

236:nobodyさん
08/03/20 13:55:53
>>233
どちらかと言うと、「負荷が高いシステム」と言うより、
「大規模なシステム」はフレームワークを使ってるという感じじゃない?

そうしないと、コーディングや保守が大変だもんなあ。

237:nobodyさん
08/03/20 14:03:35
結局は、昔からある速度重視でアセンブラ(生PHP)で書くか、
生産性重視で高級言語(フレームワーク)で書くかの話でしかないな

238:nobodyさん
08/03/20 14:07:42
小規模フレームワークはCIが一番だと思うんだよね
CakePHPは小規模フレームワークのクセにsymfonyと同レベルくらい負荷かかりすぎ


239:nobodyさん
08/03/20 14:12:16
>>238
宿題。

それをデータで示してください。

つーか、何をもって小規模といっているのかわからん。

240:nobodyさん
08/03/20 14:15:07
機能が少ないほうが早い。 機能と速度どっちをとるかだ。

241:nobodyさん
08/03/20 14:15:17
>>239
10万stepまで 小規模
データは「CakePHP CodeIgniter ベンチマーク」でググれ

242:nobodyさん
08/03/20 14:18:04
>>239
URLリンク(www.tsujita.jp)


243:nobodyさん
08/03/20 14:20:54
だめだな。CodeIgniter は小規模でしか使えない。
一番重要なモデルが貧弱すぎる。中規模以上ならCakePHPだな。
URLリンク(blogs.atanaka.biz)

・フレームワークにありがちな、あまり使わない機能が削がれている
・フレームワークにありがちな、よく使う機能もけっこう削がれている。
・だから、ステップ数が他のPHPフレームワークと比べて格段に少ない。
・だから、実行速度が速い。(ベンチマークはこちら)
・フレームワーク自体が複雑なことをしようとしていないので、潜在バグの深刻さも小さい。(たぶん)
・マニュアルがかなり読みやすく、取っつきやすい。
・cakePHPには名前のインパクトには負ける。
・ZendFramework には格式の高さで負ける。
・MVCというよりは、VCだ。モデルはあくまでもおまけ的。
・PHPがそもそもテンプレート的なんだからテンプレートエンジンいらない、と考えているふしあり。(だから速い、と)
・でも、簡単な変数置き換えの簡易テンプレートはデフォルトでついてるし、Smartyとの連携もできる。

244:nobodyさん
08/03/20 14:22:14
流行らないフレームワーク。そっちで盛り上げてくださいw

[PHP][フレームワーク]CodeIgniterスレ
スレリンク(php板)

245:nobodyさん
08/03/20 14:25:59
>>243
モデルはCIベースでオレオレ的に拡張した方がいい。
CakePHPの既存モデルにしっくり来ないから
まずコードが凄く見難い状態になる
結局バリデートにYAML使ったりと拡張しないいけない

246:nobodyさん
08/03/20 14:27:28
小規模 CodeIgniter
中規模 CakePHP
大規模 Symfony

これでいいじゃん

247:nobodyさん
08/03/20 14:29:19
小規模 CI
中規模 CI
大規模 ここまできたらCIでいいや

248:nobodyさん
08/03/20 14:31:12
CIのサクサク感を味わうと他のFWは使えない

249:nobodyさん
08/03/20 14:36:26
>>225
それバージョンいくつ?

250:nobodyさん
08/03/20 14:36:52
viewの先頭でoptions()を使って追加文字列をセットしておけば、prev()やsort()等で追加の指定する必要なくなる
$paginator->options(array('url'=>'hogehoge'))

controllerでpaginate(モデル)した後のoptionsにセットしてもurlに展開される
$this->params['paging'][モデル]['options']['hogeoge_key']='hogeoge_value'
*この方法は裏技的な気がするけど、、、

251:nobodyさん
08/03/20 14:39:31
>>249
1.2ですが?

252:nobodyさん
08/03/20 14:40:57
痛いCI厨は自分のスレを盛り上げてこいよw
わざわざCakePHPスレを盛り上げて乙

253:nobodyさん
08/03/20 14:46:46
経験から言うと、どんなものでも「軽い!」という触れ込みでデビューしたものは、
最初は機能が少なくて、バージョンがあがるにつれて機能が追加され最終的には重くなるんだよな。
で、ほかと同等の機能を備えたときには、ほかと同等の重さになっている。

254:nobodyさん
08/03/20 15:00:55
CIスレですが、今週の日曜以降、書き込みがありません。
使ってる方、どうぞ書き込んで下さい。

スレリンク(php板)l50

255:nobodyさん
08/03/20 15:11:51
akelosスレなんてもっと(ry

256:nobodyさん
08/03/20 15:33:39
>>251
hasManyアソシエーションでlimitを指定しないと確かに225のクエリになる。
ソース読んだらそのためのif文があった。これは知らなかった。サンクス

limit指定しないのが普通なのか・・・あと、なんでそういう実装にしてるんだろう。
limitでUserの件数絞るとしてもwhere user_id (1,3,5)はできると思うのだが。

257:nobodyさん
08/03/20 15:35:10
間違えた。
> limitでUserの件数絞るとしても
limitでCommentの件数絞るとしても

258:nobodyさん
08/03/20 15:42:11
>>256
>>257
面倒ならカスタムsqlでやれば早いじゃん

259:nobodyさん
08/03/20 15:42:19
んー、Commentに対するlimitがある場合はそう実装するしかないのか。
バカじゃん俺。この振る舞いについてのドキュメントはどっかにあったのかな。
連投スマソ。

260:nobodyさん
08/03/21 01:06:38
Cakeとは関係ないんですが、複数のモデルの処理(全部更新)を1個のトランザクションにするときってどう書いたらいいですか?
コントローラーにこんな感じで書こうと思うのですがどうでしょうか。

start transaction

$resultA = $modelA ->method();

if($resultA == 'error')
{
rollback
return;
}

$resultB = $modelB ->method();

if($resultB == 'error')
{
rollback
return;
}

$resultC = $modelC ->method();

if($resultC == 'error')
{
rollback
return;
}

commit

261:nobodyさん
08/03/21 04:01:36
>>260
スレ違いだと思うんだけど・・・

262:nobodyさん
08/03/21 11:15:08
confirmぺルパー作成完了

263:nobodyさん
08/03/21 11:28:48
ぺルパーについてkwsk

264:nobodyさん
08/03/21 22:38:30
バリデートのyaml化作業開始

265:nobodyさん
08/03/22 02:17:57 rTbTxKR5
コンポーネントの中でモデルって使えるよね、$this->モデル名とかで。
コントローラにはあまり詳細な処理は書きたくない(つまり、大まかな流れだけ)ので、
具体的な処理はコンポーネントをこさえて、そちらで処理したいんだけど考え方あってるかな?
たとえば、会員登録処理をするアプリを例にすると、UserRegisterComponentみたいなのを作って
identify()やregister()、update()といったモデルを扱う処理を記述して、
コントローラーからはフォームの値の受け取りとコンポーネントをコネコネ使うこと、結果によって
ビューを表示しわけるようなイメージです。
ソース書いて晒した方が早い?

266:nobodyさん
08/03/22 03:46:35
>>265
> コントローラにはあまり詳細な処理は書きたくない
> 具体的な処理はコンポーネントをこさえて、そちらで処理したい

大事なのはこれらの明確な理由が何なのかってことだと思う。
その会員登録処理がシステムの他の部分からも必要になるならコンポーネントにした方がいいと思うよ。
もしくは他のアプリでも(ほぼ)そのまま使用できるなら。
あとはコントローラとモデル(DAO層)を分離することでテスタビリティを向上させたいとかかなぁ
例えばテストの時はモックコンポーネント使うようにすればデータベースがなくてもコントローラのテストができる。

267:265
08/03/22 05:08:43 rTbTxKR5
>>266
なるほど。コンポーネントで会員登録処理と思いついた理由は指摘のとおり他のアプリで
いつも同様のことを実装してるのでコンポーネント化してしまおうというのが一番の理由。
それにコントローラ内に細かい条件分岐や処理を書き始めるとものすごくコードが肥大して
メンテナンスがし難いし、もし今後会員登録のフローを同アプリケーションの別箇所でも使い
たいって仕様変更があっても対応しやすいかと。

でも、「会員登録(管理)コンポーネント」なんて作っちゃうとモデルやDBテーブルの構造が
かなり固定化&依存してしまうのがいやだなだ、と…(AuthComponentみたいにね)
それならばpluginにしちゃえば?って考えることもあるけど、pluginってあんまり使われてないし。
うーむ。

268:nobodyさん
08/03/22 10:11:22
>>267
そんな恐ろしいほどにコードが肥大する。かつそれら共通利用する機会が多いなら
コンポーネント化しちゃいなよ

269:nobodyさん
08/03/22 10:19:47
>>267
DBテーブルの構造がかなり固定化&依存

これ内容が会員登録だったらテーブル構造に依存しちゃうのやばいだろ?
会員認証なら固定依存しても、それほど問題ないけど
コンポーネントてそもそもDBテーブルの構造がかなり固定化&依存してしまうものなんだね

270:nobodyさん
08/03/22 10:52:32
>>267
コンポーネント設計のポイントは、Plug-and-Playを可能にすることであり、独立性を高めることにある
重要となる設計要素は、インターフェースであり、注目すべきは設計要素間の依存関係だと思う
内部実装に依存しない形でコラボレーションをモデル化できるインターフェースが重要じゃないかな

コンポーネント化するということは、結局クラスをグループ化することだからね
クラス間の関連(集合-部分、汎化-特化)と依存関係を意識して設計しないと
物理的にはコンポーネント化したが、論理的にはひとつのシステム全体
ひとつの再利用単位として使わざるを得ないという状況が現れるから
この点で、依存関係の設計はかなり重要

271:nobodyさん
08/03/22 11:26:27
>>266
モックコンポーネント

あまり聞かない、組み合わせだけどw
モックとコンポーネント入れ替えするものじゃないの?

272:nobodyさん
08/03/22 11:49:52
モックンがどうかしたって?

273:nobodyさん
08/03/22 19:56:20 rTbTxKR5
ちなみにCakePHPのプラグインを配布してるサイトをご存知ですか?
「配布できる」と書いてあるくせに、プラグイン配布サイトって見たことないやと思って。
「会員登録プラグイン」とかあるといいのになー

会員登録コンポーネントの件、結局ユーザーテーブルを分けて(users:ログインIDとパスワードだけ、user_profiles:その他のプロフィール項目)
コンポーネントで固定化するのはusersテーブルを主にして、user_profilesの方はアプリケーション毎に
自由に定義できるような仕様でコンポーネントを書いてみようかと思っています。

274:nobodyさん
08/03/22 20:52:09
>>271
そういうこと。テストの時はモックを使うようにする。
「コンポーネントのモック」って意味でモックコンポーネントって言った。

275:nobodyさん
08/03/22 21:01:00
>>273
会員登録プラグイン

何度も使うような処理でも無いし面倒な処理でもないからなあ

個人的には確認画面やらページ送りやら何度も使う場面のあるプラグインもしくは
コンポーネントが欲しい


276:nobodyさん
08/03/23 01:31:09
バリデートのyaml化作業完了
yamlの空白に少しはまった

277:nobodyさん
08/03/23 02:03:00
>>276
おつかれっす

278:nobodyさん
08/03/23 12:24:28
findのような感じで、IDを指定してDBデータの更新を
ファンクションはありますか? イメージとしてはこんな感じで。
$this->Post->hogehoge($id, 'Address'->'Hokkaido');


Model classのファンクションを一通り眺めてみたのですが、
それらしきファンクションを見つける事ができませんでした。

URLリンク(api.cakephp.org)

279:nobodyさん
08/03/23 13:03:51
>>278
ファンクションて何ですか?素人は書き込まないで下さい

280:278
08/03/23 13:46:28 9wMqWTzf
>>279
先に挙げたURLで、「Public Member Functions」と記述されていたので、
ファンクションと書かせてもらいました。

methodと言えばいいですか?
既存のものでいうと、findAllやsaveなどの事です。

ご存じでしたらお教え下さい。

281:nobodyさん
08/03/23 14:00:59
>>280
こんなとこで聞くよりも自分でソース見た方が早くね?

282:nobodyさん
08/03/23 21:00:13 xiSCrZA7
>>275
会員登録プラグイン、完成したら俺にくれ

283:nobodyさん
08/03/23 22:20:17
>>282
いらねー。たぶん需要ない
会員登録なんてすぐ作れるやんwww

284:nobodyさん
08/03/23 23:07:41
>>278
カラム単位の更新でいいなら、saveField。

$this->Post->id = $id;
$this->Post->saveField('Address', 'Hokkaido');

285:nobodyさん
08/03/23 23:25:30
いらなきゃ使わなきゃいいじゃん。
小さい車輪だろうが再開発をしなくて済むなら助かる。

286:nobodyさん
08/03/24 00:14:26
再開発する機会が少ない。激しく無駄
そうじゃなければ、すでに作ってる人たくさんいるよ


287:nobodyさん
08/03/24 00:19:02
ほんとにいらなければ何もコメントしないので、たぶん荒らし。
スルー推奨。

しばらく前、本やWebを参考にRoRを使っていたが、cakePHPの方が
使いやすい。
ひょっとしたら、RoRでActiveRecordとかに若干慣れたので、
馴染みやすかっただけかもしんないけど。

288:nobodyさん
08/03/24 00:22:17 gAnd/HKb
Cakeのプラグインって、なにか有名なのってあったっけ
なんのためにプラ銀機能なんて実装されてんの?

289:nobodyさん
08/03/24 03:29:33
都道府県データどこにいれてる?

290:nobodyさん
08/03/24 03:37:25
コントローラ全体じゃなくてメソッド単位でヘルパー、コンポーネント呼び出すにはどうすればいい?
会員登録ページのメソッドにアクセスしてるにもかかわらず
コントローラでPaginationコンポーネントを定義していれば
ページ処理の関わるクラスがnewされるんでしょ


291:nobodyさん
08/03/24 13:06:37
ヘルパーは細かく考えずにコントローラ単位で呼び出すのがCake流
コンポーネントやモデルはヘルパーに比べればメソッド単位で呼び出しやすいけど
こっちも深く考えずにコントローラ単位で呼び出すんだ
多分

292:nobodyさん
08/03/24 13:16:08
例えばググレカスアクションでほげヘルパーを呼び出す場合

function gugurekasu() {
    App::import('Helper', 'Hoge');
    $ajax = new HogeHelper();
}

293:nobodyさん
08/03/24 20:55:32
まあ、そんなに特定のアクションでだけ
ヘルパーとか呼び出したいのなら、
そういうコンポーネントを作ればいいんじゃないのかな?

コンストラクタあたりで、url見てごにゃごちゃすれば出来るでしょう?

294:nobodyさん
08/03/25 00:59:47
>>292
ネーミングが中途半端だな
HogeHelperだけ普通やん

295:nobodyさん
08/03/25 01:51:15
>>294
むしろ$ajaxに突っ込んで欲しかったな

296:nobodyさん
08/03/25 10:30:40 Qe2AafnS
モデルってあんまりごちゃごちゃ書きたくないよな、dbdesigner2cakeとか使ってるとメンテナンスの面からとく。
だからといってコントローラにごちゃごちゃとロジックを書き並べたくないので
コンポーネントにすべてモデルを操作するカスタムメソッドを記述してます。

これって俺だけ?

297:nobodyさん
08/03/25 10:37:30
だからコントローラにいろいろ書くのは
まずいケーキだってケーキ様が言っている。

URLリンク(cakephp.org)


298:nobodyさん
08/03/25 10:46:51
>>297
ケーキがどうのこうのいおうが
自分の見やすい書き方が一番

たとえば1万step以下のコードなら
全部コントローラに書いた方がいい、みたいなね!



299:nobodyさん
08/03/25 10:55:58 Qe2AafnS
>>297 
3ページ目? こんなにモデルに書くもんかね…
俺だったらcとmの間のコンポーネントをずっしり書くな。別のプロジェクトにも使いまわしできるし。
コントローラだとほぼ、使いまわせないしな。

300:nobodyさん
08/03/25 11:02:26
1万ステップコントローラにべた書きとかすごいね

301:nobodyさん
08/03/25 11:05:24
>>296
コントローラに関する再利用性の高いメソッドはコンポーネント
モデルに関する再利用性の高いメソッドはビヘイビア

再利用性が高いロジックじゃないとダメ
そのロジックがコントローラ側かモデル側かどっちに属するかを間違えるとダメ

302:nobodyさん
08/03/25 11:07:56
>>300
再利用性が無いなら
10万stepsでもコントローラにベタ書きするしかないよ

303:nobodyさん
08/03/25 11:08:52
>>299
コンポーネントはコントローラとモデルの仲介役じゃねーよwww

304:nobodyさん
08/03/25 11:12:12
>>299みたいに再利用性の低いものまでコンポーネントはダメだろな


305:nobodyさん
08/03/25 11:13:20 Qe2AafnS
ビヘイビヤって1.2からのやつだよね?

306:nobodyさん
08/03/25 11:14:25
>>296
コンポーネントにすべてモデルを操作するカスタムメソッドを記述してます

これダメだろ?再利用性の高さとか無視してるやん

307:nobodyさん
08/03/25 11:17:23
1.1てバリデーションのyaml化できないんでしょ
それだけでもオワッテルw

308:nobodyさん
08/03/25 11:22:06
都道府県データとか
男性・女性・オカマとか
こういうセレクトに必要な初期データはどこへ入れるの?

309:nobodyさん
08/03/25 11:38:31
>>307
spyc重くね?

>>308
とりあえずモデル作ってfind('list')呼んでセレクトボックスへ流す。
都道府県データなんてほぼ100%変更出ないからデータの中身は定数でもいいし
郵便番号検索とか使うアテがあるならデータベース使う。
中で何やってるかは置いといて、ともかくモデルから呼べる事が大事。

310:nobodyさん
08/03/25 11:42:07
>>309
モデルのメソッドの中に都道府県データをいれて
呼び出してもOK?
もしくはDBからひっぱる、それ以外に方法はわからない

311:nobodyさん
08/03/25 11:44:21
データ量の多い定数なら、別ファイルにして
呼び出すときにモデル経由でincludeして呼び出すのがいいのかな


312:nobodyさん
08/03/25 12:29:56
>>309
> spyc重くね?
書くのはYAMLでもキャッシュとしてPHPのシリアライズデータに
変換してそれを読み込むから重くない。

313:nobodyさん
08/03/25 12:34:26
>>298
ケーキを使っている以上ケーキ様の言うことは絶対です。

コンポーネントにいろいろ書くとどれだけテストが大変になるか。

314:nobodyさん
08/03/25 12:38:32
>>308
> 男性・女性・オカマとか
これじゃ足りないな。

現在の肉体的性別 男・女
生まれたときの肉体的性別 男・女

現在の精神的性別 男・女
生まれたときの精神的性別 男・女

好きな性別 男・女・両方・肉体が男・肉体が女

まだ足りないかもな!

315:nobodyさん
08/03/25 13:04:07
>>313
再利用できないものは
コントローラーにいろいろ書くしかない
ケーク様が何も用意してくれてないから

316:nobodyさん
08/03/25 13:06:05
>>298の言ってる事はともかく
>>313はAuthComponentのソース見た事あるのかな

317:nobodyさん
08/03/25 16:31:35
コンストラクタでぐにょぐにょしたいときは
コンストラクタ内で先に
parent::__construct();
を呼ばないとダメだよ
なぜ?て
それは>>318が答えてくれるはず

318:nobodyさん
08/03/25 17:10:42
うんこちんちん

319:nobodyさん
08/03/25 17:42:53
こんなに、解釈によって作り方が変わって来ちゃうなら、フレームワークの「良い意味での縛り」のメリットが無いね。
それぞれが間違いとも正解とも言えないから余計めんどくさい。
もっと縛りがキツければ良いのに。

320:nobodyさん
08/03/25 18:12:31
>>319
バカがルールを勘違いしてるだけwww

321:nobodyさん
08/03/25 18:24:02 Qe2AafnS
ビヘイビアのうまい使い分けがわかんないー

Emailコンポーネントと連携して"emailable=1"を判別してメールするビヘイビアだとか、
ソフトデリート(=削除フラグ=1を削除)を実装したビヘイビアとかのサンプルは目にした
んだけど、もっと実践に役立つ使い道ってどんな風なの??

322:nobodyさん
08/03/26 01:26:50
俺が作っているやつでは、「自動入力フィールド」をビヘイビアでやっている。
ユーザーが入力した情報を加工したものを別フィールドに自動的に保存する。
データベースのセオリーからいえば計算で求められる物なのでビューやトリガーを使うところだが、
パフォーマンスを重視&汎用性を高めるためにこうしている。

あとどこかでぐぐって見つけた画像を保存するビヘイビア。

あるテーブルに保存したら、自動的にほかのテーブルにメタ情報を保存するビヘイビア
つまりトリガーの代わりだね。

文字コード変換ビヘイビア

仕様が変わって使っていないが、一つのフィールドに複数の値を入れられる配列型フィールドを作るビヘイビア。
(一対多のテーブルを作れというなよ?そんなJOINが発生する重い処理を作りたくないこともあるんだ。
SQL99 で標準規格化されたしね。)それの応用でオブジェクト(シリアライズ)型

それともうひとつあるのだが、これはちょっとアイデア賞物だと思うので自分のブログで書きたいw

結構いろいろ使っているなw 総論としてデータベースの機能を拡張したいときに使っている。

323:nobodyさん
08/03/26 02:10:48
>>322
日本語でおk
あいかわらず文章下手糞やなw
単純なことをわかりにくい表現するの好きやな
前スレから全く変わってねーな

324:nobodyさん
08/03/26 02:19:26
>>322
結局cakeライブラリのモデルで実装されてる機能を少し拡張したいときに
ビヘイビアにいれてるんでしょ?

325:nobodyさん
08/03/26 02:29:03
>>322
ユーザーが入力した情報を加工したものを別フィールドに自動的に保存する。

この自動的て具体的にどういう意味?

326:nobodyさん
08/03/26 02:34:57
>>322
ユーザーが入力した情報を加工したものを別フィールドに自動的に保存する。

これは前スレで自作ヘルパーでやってなかったか?
パフォーマンスを重視&汎用性を高めるというのに具体的内容が欲しい

327:nobodyさん
08/03/26 02:40:36
>>322
一つのフィールドに複数の値を入れられる配列型フィールド

SNSのような大規模サイトでもこれ使う機会なんて滅多にないんだが、何作ってんの?

328:nobodyさん
08/03/26 03:04:09
>>322
配列型フィールドて
mysqlでも検索や集計はできるの?

329:nobodyさん
08/03/26 03:06:22
>>322
配列型フィールドを使わない人にとっては
激しく必要のないビヘイビアじゃね?

330:nobodyさん
08/03/26 03:12:41
>>322
それともうひとつあるのだが、これはちょっとアイデア賞物だと思うので自分のブログで書きたいw

恒例自慢きたこれw

331:nobodyさん
08/03/26 03:36:11

なんだこの過剰反応ぶりw

みるからに同一人物のようだが、
ただの使用例に必死すぎだろw

332:nobodyさん
08/03/26 03:41:59
○○○を使わない人にとっては
激しく必要のない○○○じゃね?

なんにでも当てはまるなw
無理やり反論しようとして滑ってる。

333:nobodyさん
08/03/26 03:47:41
>>331
>>332
同一人物乙

334:nobodyさん
08/03/26 03:51:47
確かに同一人物だが、それが何か?

335:nobodyさん
08/03/26 04:15:24
>>333
cakephpとは外れたこと書くな

336:nobodyさん
08/03/26 04:38:16 pkIggipT
CakePHPで開発するアプリを設計する際にUMLで書いてる人いる?
シーケンス図やクラス図なんかどんな風に記述してるかとか見せてもらえると
参考になります。

337:nobodyさん
08/03/26 04:51:55
>>336
UMLを使うと従来の方法より効率が落ちる時もある。
なぜなら、従来なら手書きで適当に書いてきた図をUMLでどうやって書けばいいのか調べなければならないから。
書き方が全部頭の中に入った後でなら従来よりスムーズに開発ができるようになるかもしれない
が、しかし、それまでは相当の苦労が必要w
オブジェクト指向開発とUMLとはまた別の話でUMLはオブジェクト指向開発の道具にすぎない


338:nobodyさん
08/03/26 04:59:22
>>336
UML?時間の無駄だろ。そんなん書いてたら
工数オーバーするしで誰も喜ぶもんおらんで


339:nobodyさん
08/03/26 05:04:03
C#やJAVAならわかるけどPHPでUMLて
そんなクラスが複雑じゃないやん

340:nobodyさん
08/03/26 05:24:25
そういう問題じゃねーだろw

341:nobodyさん
08/03/26 10:28:27
>>339
確かにphpでUMLてぐぐったけどあまり無いな

342:nobodyさん
08/03/26 10:50:05
そりゃぐぐったことが無いという人もいるだろう。
だがそれは個人の話であって統計的な意味は無い。

検索結果のほうがまだ意味があるな

PHP UML の検索結果 約 957,000 件中 1 - 10 件目 (0.03 秒)
Java UML の検索結果 約 593,000 件中 1 - 10 件目 (0.04 秒)
C# UML の検索結果 約 404,000 件中 1 - 10 件目 (0.04 秒)

343:nobodyさん
08/03/26 11:29:28
Cakephpと関係ない話すんなやボケどもが

344:nobodyさん
08/03/26 11:31:39
なんでCakePHPにUMLの話が出るのかわからんw

345:nobodyさん
08/03/26 11:37:41
>>340
そういう問題だろw

346:nobodyさん
08/03/26 11:58:29
俺はJavaをメインでやってるけどUMLは
複雑になってくるクラス間の関連性の構造の手助けとしてUMLを活用することが多い
だから>>339のいってるように複雑なクラスで無ければ必ずしもUMLが必要とは思わない


347:nobodyさん
08/03/26 12:17:07
ユースケースは必ず書くけど、シーケンスみたいな実装よりの奴は
実装者が未熟な場合か、処理が複雑なときだけかな。
クラスダイアグラムはモデル限定でこれもテーブル構成が複雑なときだけ。

ユースケースは文書に起こして仕様書にするので必須。

PHPのクラスを自動生成してくれる奴なかったっけ?
あれでCakeのモデルを自動的に管理してくれると楽かも...楽じゃないかw


348:nobodyさん
08/03/26 12:24:40
UMLのクラス図ってようするに継承関係と関数定義(実装コード無し)を
書いているだけでしかないからなぁ。

それならコードで書いてコードからクラス図を自動生成したほうが楽。

349:nobodyさん
08/03/26 12:38:45
Javaだとクラスが複雑になってしまうんだよね。
正確にはEJBを使った場合だが、同じものを作るにしても
無意味に複雑になりすぎる。
あれじゃあ、UMLが必要になるのもわかる。

350:nobodyさん
08/03/26 13:44:26 ktIW9Uv7
ちょwww おまえら設計書も書かずに開発しちゃってるのかよ、涙がでるな。
それだから「できました」とかいいながらテストしたらバグ出まくりのプログラムなんか量産しちゃうんだよwwww

UMLじゃなくてもいいが、実装前に詳細なロジックを書き起こしてからコードつくるのは常識だろ。
時間がかかる、めんどくさい、頭の中にもう仕様書書いてあるから、という奴に限ってたいした技術力じゃないんだよな。
設計書ってのはコーディング作業が楽になるだけでなく、チーム関係者との意識共有や、リリース後しばらくたってメンテが必要になった時に効果がでるもんだぜ。
プロとして仕事でやってるならば当たり前だと思ってるが、ここにはプロはいないのか?

351:nobodyさん
08/03/26 14:32:19
楽譜の読めないミュージシャンもいるしな。

352:nobodyさん
08/03/26 15:25:48
>>350
実装前に詳細なロジックを書き起こしてからコードつくるのは常識だろ

それお前だけの常識乙w
CakePHPのような小規模案件に無理があるぞお前w

353:nobodyさん
08/03/26 15:29:27
>>350
どこの大手で働いてんだよCakePHPさわってる分際でw

354:nobodyさん
08/03/26 15:34:17
>>350
CakePHPでいくらも稼げてねーくせにw


355:nobodyさん
08/03/26 15:37:50
短納期で回転させるのがCakePHPのメリットなのに
わざわざUMLとか工数伸びるだけやんけ
そんなんで、ほんまに黒字になってんのかw

356:nobodyさん
08/03/26 15:41:14
>>350
スレ違いながら言わせてもらうと・・

実際、開発しながら見えてくる事って多いよね。
キチンと設計や仕様固めが出来ないまま、見切りスタートを切ってしまうことも多々。
問題は、その仕様の追加、変更に対応出来るように設計する事だよ。

357:nobodyさん
08/03/26 16:12:51
そうなんだーUMLって書かないんだ。
俺は書き方すら知らないけど。

作る前に一応メモに何をどうするかを書き出して、その通りに作ってくね。
あまりに自分の頭の中だけで作ると変数とか何を使ったかわからなくなったり。

イラレで仕様書とか作るのが激しくめんどい。
よって手書きで自分はやってます。

358:nobodyさん
08/03/26 16:15:44
>ここにはプロはいないのか?
w

359:nobodyさん
08/03/26 17:32:25
え…設計フェーズ飛ばしていきなりコーディングに入るの?ギャグだろ?
最低限、要求定義書とユースケースとビジネスロジック(=モデル)の関係図とそれを基にしたスキーマ設計位は必要じゃねーの
打ち合わせ段階で作りまくるじゃん、そんなの
どやってクライアントのイチャモンに対応してるの?

>>357
イラレで仕様書とか正気?

360:nobodyさん
08/03/26 17:56:28
パワポが激しくめんどくさい。
よって俺もexcel&イラレだな。

361:nobodyさん
08/03/26 17:58:19
まあ、コーディング前の設計は
概要みたいなもんだからね。

たとえば関数をすべてコーディング前に列挙できるかといったらまず不可能

プロのプログラマはコードで設計するんだよ。
鉛筆で図を書くか、キーボードでコードで書くかの違い。

362:nobodyさん
08/03/26 18:01:13
プロはソースにたくさんコメントを残す。

363:nobodyさん
08/03/26 19:04:34
×プロはソースにたくさんコメントを残す。
○プロはソースに意味のあるコメントを残す。


364:nobodyさん
08/03/26 20:37:18
>>359
もっとプログラマと交流深めた方がいいよ

365:nobodyさん
08/03/26 20:39:13
>>359
どんだけ狭い世界観なんだよ

366:nobodyさん
08/03/26 21:07:55
10分以内( ´,_ゝ`)

367:nobodyさん
08/03/26 21:55:41
>>364
この人、確実に嫌われてるだろうな、プログラマに。

368:336
08/03/27 00:00:03 d9lPRB8S
>>336です
意外と盛り上がっててびっくり…

369:nobodyさん
08/03/27 01:42:38
>>359

イラレで仕様書は普通。

370:336
08/03/27 02:53:28 d9lPRB8S
>>369
マジかよ。それなんてイラレ?

371:nobodyさん
08/03/27 11:48:14
たとえばフォームにある省略可能な数値型の項目に
値を省略して(空文字で)データベースに保存した場合空文字でINSERTされる。

このときのどう保存されるか動作はデータベース依存であり
MySQLは0になり、PostgreSQLはエラーになる。

URLリンク(trac.cakephp.org)
チケットが出ていたみたいだが、修正無しでクローズ?

これ直る見込みないんかいな。確かに空文字とNULLは違うものだが
「データベースの省略可能な数値フィールド」ってのは
数値とNULLしか入れられないんだよね。

どうせNULLが入ったフィールドをModelから読み込むと
空文字になるんだし(あってるよね?)
NULLに変換して保存したほうが実用的だと思うんだけどなぁ。

データベース間の違いも吸収したほうがいいし。

beforeSaveあたりで書き換えるか・・・

372:nobodyさん
08/03/27 15:25:42
>>371
それはCakePHPに限ったことでは無いから死んでこい

373:nobodyさん
08/03/27 15:27:34
>>371
そんなどうでもいい作業するくらいなら
コンビニでバイトするよ

374:nobodyさん
08/03/27 17:50:07
CakePHPのアソシエーションでBelongsToやhasOneを渡り歩いて
広範囲のテーブルから値を持ってくるにはどうすればいいんでしょうか

SQLならLEFTJOINを繋げて行けば済むのですが
単純にrecursiveを増やしていくとクエリの量が異常に増えて困っています

375:nobodyさん
08/03/27 19:31:16
最近低レベルの煽りしか返さない奴がいるなウザイ。
どうせ同一人物だろうからトリップつけてくれ。削除すっからさ。

376:nobodyさん
08/03/27 19:48:23
>>375
低レベルの質問しかないから仕方ないこと

377:nobodyさん
08/03/27 19:51:40
>>374
リファレンスみろよ
こんなとこで聞くなカス

378:nobodyさん
08/03/27 20:14:15
>>376-377 だからトリップつけろってw

379:nobodyさん
08/03/27 21:54:01
>>377
アソシエーションが直接繋がっている関係なら資料は山ほどあるのですが
例えば4テーブル先まで繋がっているデータを手繰り寄せてくる場合、デバッグ情報を見ると
一旦findで取得してきた配列をforeachで回して一つ一つまたfindを使っているように見えます
結果、データ自体は取ってこれるもののSQLの発行数が異常な量になってしまいとても使う気になれません

SQLの発行を抑えつつもアソシエーションを柔軟に広げるためには、自前でqueryを使うしかないのでしょうか?

380:nobodyさん
08/03/27 22:01:13
ユニットテストでfixturesの機能使っている人いる?

var $fixtures = array(~~~);

こんな感じでfixturesをしているわけだけどさ、
なんかテーブルの生成のタイミングとか変じゃない?

テストを単体で実行すると問題なく動くんだけど、
すべて実行するとテーブルが無いとか言われることがある。



381:nobodyさん
08/03/27 23:06:17
>>370
adobe社のイラレだと思うけど。

>>375

わかる。人をバカにしてばっかだよな。あおってるやつ。
見てて気分悪い。

>>376 >>377
リファレンス見てわかるならそのURL教えてあげようよ。
しかも、聞いてる 374 はある程度知識あると思うよ。
もうちょっと人を思いやる気持ちを持とうよ。

382:nobodyさん
08/03/27 23:10:00
>>372
まず、おまえがシネ

383:nobodyさん
08/03/27 23:23:59
>>379
質問の内容があまりにも素人すぎ
CakePHPばかにしてんのか?




384:nobodyさん
08/03/27 23:25:34
誰も馬鹿にしてないから答えろよw

385:nobodyさん
08/03/28 00:13:02
人をバカにすることで自分が上に立ったような感覚を味わいたいんだろうな
残念なやつが多い

>>379
その4テーブルはどんなリレーションなの?
で、今はどんなアソシエーションを記述してんの?
もしかしたらDB設計が悪いという可能性もある。

386:nobodyさん
08/03/28 00:51:53
>>385
各フレームワークの評価目的でプロトタイプを作っていますので
特定のテーブルの再設計で問題を解決するアプローチでは応用範囲が非常に限られてしまいます
申し訳ありませんがCakePHP側での解決を求めています

例えばごく単純にモデルが
A→B→C→D
とbelongsToで数珠繋ぎにアソシエーションが設定されている場合
AのリストにB~Dのデータを動的に付加して取得したいとすると
どのような指定をすればよいのでしょうか

SQLならJOINをただ書き連ねていけばいいのですが

387:nobodyさん
08/03/28 01:28:45
>>386
CakePHPさわってどれくらい?
あまりにも初心者的な質問やめてくれる

388:nobodyさん
08/03/28 01:30:56
スレ分けて欲しいな。CakePHP初心者スレ作ってよ

389:nobodyさん
08/03/28 01:42:40
>>386
初心者が他人の力借りて簡単にCakePHP評価しようなんて
CakePHPなめすぎだろ?
自分で死ぬ思いでググれボケ

390:nobodyさん
08/03/28 02:37:39
>>386
できそうにない。

URLリンク(trac.cakephp.org)
上で同じようなこと言ってたけど対応なしにcloseされた模様。
URLリンク(trac.cakephp.org)
上も同様のことを言ってる。3週間ほど前。

>>377 >>383 >>387 >>388 >>389
俺もこれの具体的な解決方法を知りたいです。どうか教えてください。

391:nobodyさん
08/03/28 02:57:36
>>390
CakePHPの知識全くないくせに英語力を自慢がしたいの?

392:nobodyさん
08/03/28 03:06:49
>>390
>>371
ここにいる馬鹿どもが、みんな英語わかると思ってんのか?w
さりげなくバカにしてるだろ

393:nobodyさん
08/03/28 03:20:48
>>390
今調べて出来そうにないって。こういうケースはじめてなの?
経験浅すぎじゃね。1つのサイトをCakePHPで完成させたことないやろ

394:nobodyさん
08/03/28 03:22:38
>>391
いや、これに関しての日本語の情報がなかなか見つからなかったから英語の記事を探さざるを得なかっただけ。
で、CakePHPの知識がある人はこれをどうやって解決してるんでしょうか?

395:nobodyさん
08/03/28 03:31:35
>>390
どうして、できそうにないか具体的に日本語で説明しろ。わかったな命令だ


396:nobodyさん
08/03/28 03:56:27
このスレ、なんか冗談だと思えるくらい殺伐としてんな w

397:nobodyさん
08/03/28 06:59:33
>>396
何でだかアンチが混じっている。
で、cakePHPは重いとか、質問者を叩いたり。
無視推奨。

つか、アンチしてる人、cakePHPを無視すればいいのにね。

398:nobodyさん
08/03/28 08:46:16
英語のサイト貼りつけて叩かれるのは初めて見たw
日本のサイトで分からなければ、海外サイトくらい見るだろ。

分からなければWeb翻訳すればいいんだしな

399:nobodyさん
08/03/28 09:18:10
粘着気質で知性もないとか救いようがないな。
トリップの付け方も知らないらしいし、ほんと終わってんな。w

400:nobodyさん
08/03/28 09:20:55
なんだこの流れ
とてつもないバカが何人かいるな


401:nobodyさん
08/03/28 09:29:46
>>390
まさしくそのtickets通りです
CakePHPは隣り合ったアソシエーション間ではJOINを繋いでSQLワンコールに最適化してくれますが
それ以上のテーブルをまたいだ関係を持とうとすると途端にクエリ量が増えてしまいます

個人的にrecursiveでアソシエーションの深度を指定する考え方は
好感が持てるのですが、負荷の高さを考えると使用をためらわざるを得ません

サブクエリをインテリジェントに挿入しろとは言いませんが
今回の様な使用頻度の高いと思われる(かつ、割と実装の想像しやすい)処理ならば
既に解決された方がいらっしゃるのかと質問に至りました

--
先ほどContainableBehaviorを試してみましたがクエリ量は変わりませんでした
やはりコアに直接手を加えないといけないようですね(´・ω・`)

402:nobodyさん
08/03/28 10:01:46
A→Bのクエリ発行したときに
モデルにB→Aのアソシエーションも記述してあると
B→Aのクエリも発行される
だから
A→B→C→D のようなのをそのままやっちゃうと
えらいことになる

だから、いらいないアソシエーションはunbindModelでぶった切る

あと、1.2だと発行クエリが1.1より最適化されている
(つまり、少なくなってるってこと)


403:nobodyさん
08/03/28 10:11:39
>>397
明らかにアンチじゃない奴のほうがたち悪いぞ。質問者叩いてるのもそう。

>>402
>>401の問題解決にはならないんじゃない。B->Aのアソシエーションがなくても起こるから。

>>401
DBにview作れば早いと思うよ。

404:nobodyさん
08/03/28 10:15:32
質問があまりにもバカすぎて・・・
レベル低いよな。
ここでアフォみたいな質問してるやつは
CakePHPでサイト構築したことあるのかと聞きたいよ



405:nobodyさん
08/03/28 10:19:27
あまりにもバカみたいな質問にバカみたいな回答が多すぎ
もっと常識レベルでの会話して欲しいな
駄文ばっかで何の役にも立たないよ

406:nobodyさん
08/03/28 10:27:40
>>405
それそのまま>>405に当てはまるのわかる?

407:nobodyさん
08/03/28 10:30:15
もっと常識的な質問たのむ

408:nobodyさん
08/03/28 10:36:03
かわいそうに

409:nobodyさん
08/03/28 10:57:56
バッチ処理で長くかかる処理をやるのなら話は別だけど
ウェブアプリなんて画面に表示する少ないデータを
表示するだけなんだからJOINしなくてもいいと思うんだけどね。
どうせ複雑なJOINならJOINするのにも負荷かかるわけだし。

ま、パフォーマンスと開発効率のトレードオフ。
どうしても必要なら、モデルに専用の検索メソッドでも作って
自分でクエリー書けばいいんじゃない?

410:nobodyさん
08/03/28 11:00:25
もっと常識的な質問たのむ

411:nobodyさん
08/03/28 11:03:37 q/btZ3WH
アンチがしつこくネガティブキャンペーンするのも
CakePHPが人気になって普及してきた証拠かなぁw

アンチじゃない人はIDだすようにするか?
そうすればID出していない人はアンチってわかるし。
出したら出したで削除できるしw

412:nobodyさん
08/03/28 11:10:07
アンチを勘違いしてると思うが
いい質問には、マナーをもって接するが
ろくでもないレスばっかりだからな

413:nobodyさん
08/03/28 11:13:12
>>411
自治厨乙。
だいたいにして、IDなんていつでも変えれるんだから意味ないじゃん。

414:nobodyさん
08/03/28 11:14:01
ろくでもないレスは無視するかマナーをもって
訂正を促すのが良い返答の仕方だよ。

415:nobodyさん
08/03/28 11:14:44 q/btZ3WH
>>413
やってみなきゃわからないじゃんw

416:nobodyさん
08/03/28 11:17:51
>>415
どんだけ必死なんだよw

417:nobodyさん
08/03/28 11:57:59 anJTbKap
>>409
もちろん速度を重視しなくてはならない場面ならば専用メソッド内でSQLを書きます
しかし、上記の様にシンプルなアソシエーションすら動作が怪しいとなると
フレームワーク自体に手を出して最適化させた方がコスト的にベターかなと思います

>>403
複雑なアソシエーションのパターンが出来上がってる時はView使った方がいいですね
今ふと考え付いたのですが、結合済みの仮想テーブルを作って、それを元に
CakePHP側のモデルを構築するアプローチは面白いかもしれません

#仮想テーブルへの更新作業はDB依存のため怪しい臭いはしますが

418:nobodyさん
08/03/28 12:20:53
>>417
負荷を考えるならフレームワークやめろ
CakePHPなんてのは、どうでもいいクライアントに高速納品するための道具てことに気づけよバカ

419:nobodyさん
08/03/28 12:26:48
>>417
今頃フレームワークの評価とか手を出すとか、どんだけ遅れてんだよ
この業界は進歩が早いの知ってる?

420:nobodyさん
08/03/28 12:43:39
>>417
> 結合済みの仮想テーブルを作って、それを元にCakePHP側のモデルを構築する
view作ればって言ったのはそういうこと。
面白いかどうかはおいといて、現状の打開策としてはアリかなと思うわけです。

> 仮想テーブルへの更新作業はDB依存のため怪しい臭いはしますが
このDB依存は仕方ないと割り切ればいいんじゃないかな。割り切れるところだと思うし。

421:nobodyさん
08/03/28 12:49:51
>>417
やる前にあれこれ聞かずにやってみろよ
こんなとこで解決できれば苦労しねーよクソが

422:nobodyさん
08/03/28 12:53:20
評価なんてソース解析して自分で実際にサイト構築しないとわからねーよ
やってくうちに想像しない難点が沢山でてくるよ



423:nobodyさん
08/03/28 13:01:42
>>417
速度重視とか柔軟性考えるならCIにしろや

424:nobodyさん
08/03/28 13:04:47
CakePHPを最適化させにくいフレームワーク
最適化したいならCIスレにいって、このスレからでていけや

425:nobodyさん
08/03/28 13:28:19
>>420

426:nobodyさん
08/03/28 13:34:05
っていうかJOINにならないというのは
どのフレームワークでも同じこと。
CIでもSymfonyでもRubyOnRailsでも同じだよ。

特にCIは最悪だね。いろんな意味で。
ここではすれ違いだから言わないけど。

427:nobodyさん
08/03/28 13:40:13
>>426
どのフレームワークも同じなら軽量でサクサク動作するCIの方がマシ

428:nobodyさん
08/03/28 13:44:02
>>417
> しかし、上記の様にシンプルなアソシエーションすら動作が怪しいとなると

シンプルではないよ。

CakePHPでもその他でもそうだけどO/Rマッピングというのは
従来の表形式の使いづらいリレーショナルデータベースを
高レベルに扱いやすく使えるようにするもの。

リレーショナルデータベースを基本に設計されたものではなく
より理想的なオブジェクト指向風なデータ構造をもとに設計されたもの。
だからいろんな取り出し方ができる出来る柔軟性がある。

たとえば、behaviorでデータ挿入・取り出し時に色んな処理をかませられる。

そういう柔軟性を持たせながらシンプルなSQLに置き換えるのは容易ではない。
不可能な場合すらある。

なんでもかんでもパフォーマンスを気にして無駄なものを作るのは
初心者のやること。一日働いて3万円人件費をかけるのなら、
その3万円でスペックをあげたほうが総合的に考えてメリットが
高いという時代だから、今は。

429:nobodyさん
08/03/28 13:50:03
CIはデータベースを使わない。使う頻度が少ない場合にはいいけど、
データベースを使う場合、貧弱だよな。

あれならSQL直書きした方がいいってほどメソッドがアホらしいしw
なによりビヘイビアが無いのが一番痛い。

430:nobodyさん
08/03/28 13:50:47
>>428
なんでもかんでもパフォーマンスを気にして無駄なものを作るのは
初心者のやること

サイトリニューアルなど
既存ユーザーが多数いる自社製品ならパフォーマンスを意識する



431:nobodyさん
08/03/28 13:52:21
> 既存ユーザーが多数いる自社製品ならパフォーマンスを意識する
マシンスペックを上げろ

432:nobodyさん
08/03/28 13:54:32
>>429
複雑なアソシエーションはSQL直書きになるんならCIが理にかなってる



433:nobodyさん
08/03/28 13:55:17
複雑なものじゃなくてシンプルにしようと考えような。

434:nobodyさん
08/03/28 13:55:42
>>426
symfony(というかpropel)はJOINになる

435:nobodyさん
08/03/28 13:56:08
>>431
ユーザーが増えるたびに、どんだけマシンが必要になるんだよ


436:nobodyさん
08/03/28 13:56:12
JOIN使わないで一回一回よんでも
パフォーマンスはたいして変わんないんだけどなw

437:nobodyさん
08/03/28 13:57:04
>>435
ユーザーが増えると重くなるのはどれでも一緒ですが?

働いていない人は、人件費というコストを計算に入れないからなぁw
まあ、がんばれやw

438:nobodyさん
08/03/28 13:57:54
>>436
変わるよ あほか

439:nobodyさん
08/03/28 13:57:57
SQL直書きになる機会が多いならCIがいい


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch