【PHP】フレームワーク CakePHP 3ホール目【本命】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/14(金) 15:16:00ID:HF9x5ODX10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0451nobodyさん
2008/03/28(金) 14:14:14ID:???0454nobodyさん
2008/03/28(金) 14:20:13ID:???0455nobodyさん
2008/03/28(金) 14:21:44ID:???0459nobodyさん
2008/03/28(金) 14:25:14ID:???データベースを分割してJOINが使用できなくなった。
負荷を考えるのなら、JOINなんかするより、
マシンに投資してデータベースを分割(当然マシンも増えているはず)して
アプリケーションで行ったほうがいいということです。
0461nobodyさん
2008/03/28(金) 14:31:33ID:???0462nobodyさん
2008/03/28(金) 14:37:17ID:???データベース部分は、SQLの単語(selectやfromやwhere)を
それぞれメソッドに置き換えて実行しないといけない。
なんとビックリw
だから糞。
0463nobodyさん
2008/03/28(金) 14:38:23ID:???$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
0464nobodyさん
2008/03/28(金) 14:38:41ID:???ただ、「マシンに投資してデータベースを分割(当然マシンも増えているはず)して」が始めからできるわけじゃないんだよね。
だからSQL発行数も含め、パフォーマンスには常に気を遣うわけで。
mixiが今はソフトウェア側でパフォーマンスを気にしてないかっていったらそんなことはないし。
>>460
パフォーマンスの話してるよ。何言ってんの?
もう面倒だからお前いいよ。
0465nobodyさん
2008/03/28(金) 14:40:13ID:???最適化して、あとは楽で速いコーディングをすればいいじゃんか。
パフォーマンスの基礎だよ?
0466nobodyさん
2008/03/28(金) 14:41:27ID:???これいいね。わかりやすい構文だ
CakePHPの
find(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,)
これに比べれば天と地に差
0469nobodyさん
2008/03/28(金) 14:44:26ID:???$this->db->select('title');
$this->db->from('mytable');
$this->db->where('id', $id)
$this->db->limit(10, 20);
こうなります。
0470nobodyさん
2008/03/28(金) 14:45:17ID:???名無しで必死にレスしてるようだが
名前に番号でもつけてくれないと
今までどんな発言してんかわかんないんだがw
0473sage
2008/03/28(金) 14:50:37ID:JUQ1v1x2ってことはUTF関係か。
0474nobodyさん
2008/03/28(金) 14:50:44ID:???0475425
2008/03/28(金) 14:54:55ID:???>>420
その通りですね。同一アプリケーション内でDBをスイッチする事はありえないので
リスクとしては小さいため十分検討できます(一応、PostgreSQL使ってる方は注意です)
>>424
CodeIgniterもとてもいいフレームワークだと思います
ぜひその情熱で当該スレッドを活性化させて盛り上げて欲しいですね
>>428
確かにアソシエーションの自動判別が面倒(無理)という事情は分かります
面倒なSQLを叩かずオブジェクティブにデータセットを取得できる機能が
すでに実装されていているのですからそれを使うに越した事はありません
この辺りの実装はアプリケーション全体のパフォーマンスに影響するため
サーバ増設前の改良を十分に検討できる部分だと思います
0476nobodyさん
2008/03/28(金) 14:54:59ID:???見ろ他フレームワーク(特にCI)の静けさを!
0479nobodyさん
2008/03/28(金) 15:45:01ID:???0480nobodyさん
2008/03/28(金) 15:54:32ID:???0481nobodyさん
2008/03/29(土) 07:40:57ID:???0482nobodyさん
2008/03/29(土) 09:07:16ID:???0483nobodyさん
2008/03/29(土) 15:28:58ID:???0484nobodyさん
2008/03/29(土) 15:56:30ID:???0485nobodyさん
2008/03/29(土) 16:10:19ID:???0489nobodyさん
2008/03/29(土) 22:04:16ID:t2qvxoud0490nobodyさん
2008/03/29(土) 22:08:25ID:???0491nobodyさん
2008/03/29(土) 22:15:25ID:???完璧すぎる
0492nobodyさん
2008/03/29(土) 22:29:55ID:???0493nobodyさん
2008/03/29(土) 22:57:31ID:???トイレ行った後とか今まで何考えてたかさえ忘れる
0494nobodyさん
2008/03/29(土) 23:43:43ID:VJRoSuRrFreeMindインストール済み。
自宅ではCakePHPのシステム設計に使ってる。
ひとつずつやる事片付けて、終わったブランチに「レ」のアイコン付けるのが
楽しい。
0495nobodyさん
2008/03/30(日) 02:14:14ID:???マインドマップは自由な図解表現
0496nobodyさん
2008/03/30(日) 02:16:24ID:???0497nobodyさん
2008/03/30(日) 02:17:48ID:xhO/sY7i0498nobodyさん
2008/03/30(日) 02:19:35ID:???0499nobodyさん
2008/03/30(日) 02:26:47ID:???0500nobodyさん
2008/03/30(日) 02:31:49ID:???思ったことを、どんどん言葉として書き出す
わかってるからと頭の中でしまいこむと、全体的な解決図を結び付きにくくする
0501nobodyさん
2008/03/30(日) 02:45:33ID:???もっと言語化するクセつければ、コミュニケーション能力向上になるんじゃないかな
0502nobodyさん
2008/03/30(日) 17:27:12ID:???すぐexit();
してる?
0503nobodyさん
2008/03/30(日) 20:27:27ID:3z+xm+ln遅レスだが、ソースの頭にBOMを付けたら表示されるようになた。
が、viewのファイルは8Nで保存しておかないと、たまに悪さをするようだ。
0506nobodyさん
2008/03/31(月) 10:59:21ID:???コンポーネントでrenderを呼んだときは
exitしないとデフォルトのrenderが最後に読み込まれるよ
0507nobodyさん
2008/03/31(月) 11:00:31ID:???SeleniumとSimpleTestの組み合わせが最強?
0508nobodyさん
2008/04/01(火) 01:26:52ID:j0Vrw1hDそっちのテストなら、セレニウムだろうと手作業だろうとなんだって良くね?
ユニットテストをするのなら1.2から正式対応したSimpleTestって言うだろうけど。
ていうか、テスト駆動開発って面倒ですよね、時間がかかるけど出来上がり安定するのは確かだけど。
0509nobodyさん
2008/04/01(火) 01:34:29ID:???ある程度の規模になったら、ユニットテストをやらないなんて
考えられないよ。
修正があるたびに同じテストなんてやってられない。
それこそ時間がかかる。
0510nobodyさん
2008/04/01(火) 02:09:46ID:???なんといってもテストが楽
0511nobodyさん
2008/04/01(火) 12:33:08ID:???0512nobodyさん
2008/04/01(火) 20:20:10ID:???0513nobodyさん
2008/04/02(水) 00:32:30ID:Ldo05SB7ビヘイビアって使ってる?
0514nobodyさん
2008/04/02(水) 00:38:10ID:???荒らしが去ったので落ち着いただけ。
CakePHPを使って、ようやくサイトを公開できた。
思ったより使いやすいね、CakePHP。
0515nobodyさん
2008/04/02(水) 03:09:53ID:???ビヘイビアを一番使うな。
よくよく考えると、ソフトウェアの中心はモデル。
その中心の共通処理なんだからよく使うのは当たり前か。
0516nobodyさん
2008/04/02(水) 11:07:25ID:???ソフトウェアの中心はコントローラー
なぜならコントローラーはモデルとビューにも指令を出すが
モデルは、たいていコントローラを介してのやりとりになるから
そういう考えで行けば、よく使うのはコンポーネントじゃないとおかしい
0517nobodyさん
2008/04/02(水) 11:18:11ID:Ldo05SB7アフォがあらわれた
0518nobodyさん
2008/04/02(水) 11:57:50ID:KzinrGTWそれは、findAll() でやるべきなのでしょうか?
0519nobodyさん
2008/04/02(水) 12:05:53ID:???コントローラなんて所詮インターフェースに過ぎんよ。
実際の処理じゃなくて、ブラウザから引数を受け取って
それを少々加工してモデルに渡す。
またモデルから受け取ったデータを少々加工してビューに渡す。
流れとしてはこんな感じだね。
「ブラウザ」→「コントローラ(加工)」→「モデル(実際の処理)」→「コントローラ(加工)」→「ビュー(HTML出力)」
っていうか、このように作らないとテストがしづらいったらありゃしない。
SeleniumやCakeWebTestCaseがあるとはいえ、
コントローラを操作してのテストでは範囲が大きすぎる。
もっと小さな範囲でテストできるようにしないといけない。
一番重要な処理を最小限の大きさ(なるべく他に依存しない)で
テストすること考えれば、自然とこうなるはず。
0520nobodyさん
2008/04/02(水) 15:46:57ID:???これほど自民党の一党独裁の問題点が分かりやすい現象は無いなw
0521nobodyさん
2008/04/02(水) 16:07:32ID:???そうなんだ。だから本にもモデルのテストの方法しか書いてなかったんだ。
モデルよりコントローラーをテストしたいんだけど・・・ってずっと思ってた。
ということは、僕のプログラムの組み方がよくないんでしょうか。
0522516
2008/04/02(水) 16:33:04ID:Ldo05SB7さきほどはアフォと一言で片付けてしまって申し訳ない、2ch流の愛情表現だと思ってくれ
で、>>519のいうとおりアプリケーションの中心となるビジネスロジックについてはコントローラなどでは
なくモデル内で実装するべき。一番大切なテストはビジネスロジックであるわけだし、モデルに集約して
(かつコントローラとのインタフェースも疎結合にして)コアロジックを実装することでコアロジックを別システムに
再利用しやすくなるというメリットも受けられる。
なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべきだし、コントローラ
内で繰り返しよく使う処理についてはコンポーネント化してあげたほうが、ユニットテストで品質を保証できるので
良いかと。
こんな感じで考えていますが、どうでしょう?
0523nobodyさん
2008/04/02(水) 16:44:10ID:???Seleniumこれだけあれば、全く十分なんだが
これ以外でテストしようとすればコストかかるだけやろ
どんくさい作業してんな、赤字やろ?
0524nobodyさん
2008/04/02(水) 16:50:49ID:???だから何ってかんじだが、それがどうしたんだよ
リファレンスに書いてあるようなこと、なんで必死に訴えてるのwww
0525nobodyさん
2008/04/02(水) 16:52:59ID:???0526nobodyさん
2008/04/02(水) 16:56:38ID:???ブラウザを起動する為、そもそも動作が遅いってのもあるが、
Seleniumだといくつものモジュールが組み合わさった状態で
テストするしかないから、どこのバグがあるのか見つけにくい。
またデータの初期化などが出来ない。
途中で内部のデータを調べることも出来ない。
CakePHPにはSimpleTestでブラウザをエミュレートした状態の
テストもできるので基本はそれを使ったほうが良い。
Seleniumを使うとしたら、SimpleTestではできない
JavaScriptが絡んだ処理のテストぐらいだな。
0527nobodyさん
2008/04/02(水) 16:58:43ID:???間違いではないということだなw
0528nobodyさん
2008/04/02(水) 17:01:36ID:???アプリケーションの中心となるビジネスロジックて何?
どんなロジック?
一番大切なテストてどんなテスト?
>>モデルに集約して
(かつコントローラとのインタフェースも疎結合にして)コアロジックを実装
プラグインと違うの?
>>なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべき
モデルとビューに命令出すのに薄い実装なんて物理的に無理
モデルはカラッポでOK
0529nobodyさん
2008/04/02(水) 17:04:44ID:???ブラウザ上でテストするだけなのにモジュールとか関係ないしwww
JavaScriptテストやるなら加工しないと出来ないだろwww
0531nobodyさん
2008/04/02(水) 17:08:00ID:???0532nobodyさん
2008/04/02(水) 17:08:48ID:???0533nobodyさん
2008/04/02(水) 17:09:00ID:???0534nobodyさん
2008/04/02(水) 17:09:39ID:???糞スレでやってねw
0537nobodyさん
2008/04/02(水) 17:18:56ID:???いや、まて、わざと悪い例を出しているのか?
まあ、訂正している俺は考えをまとめられていいけどな。
(そして訂正している文を見て学習する人もいるだろう)
> モデルとビューに命令出すのに薄い実装なんて物理的に無理
> モデルはカラッポでOK
コントローラが出す命令はすごく小さなものだよ。
モデルに対して、「データ取って来い!」「書き込め!」「削除しろ!」
そして、「複雑な一連の処理をしろ!」
前三つは、CakePHPの自動生成コードでも書いてあるから
簡単にわかると思うけど最後の「複雑な一連の処理をしろ!」を
モデルに書くべきってことをわかってない人が多いんだよね。
複雑な一連の処理をコントローラに書いてしまう。悪い例だ。
0539nobodyさん
2008/04/02(水) 17:29:17ID:???0541nobodyさん
2008/04/02(水) 17:32:26ID:???0544nobodyさん
2008/04/02(水) 17:53:38ID:???モデル上で別のモデルのデータ取得できなくね?
0545nobodyさん
2008/04/02(水) 17:55:24ID:???どこまでをモデルでやるかは結局設計しだいだけど、
>>541
ユーザーがフォームからの条件入力。URL形式での条件入力
、つまりコントローラのアクション関数の引数に入る場合。
その引数をもとにモデルを呼び出すわけだけど、
このときのモデルの関数は汎用的なfind関数でもいいし、
もっと簡単に扱いたければ、モデルに専用の関数を作って呼び出す。
汎用的なfind関数を使う場合には、array('key' => '= ' . $value)なんて
条件データに加工しないといけないよね? これがコントローラの処理。
モデルに専用の関数を作る場合、もっと簡単に使える関数にするね。
もちろんその場合、モデル内部でfind関数を使うことになるだろうし、
そのための条件の加工もモデルに書く。
ユーザーの入力した条件が、POSTでくる場合は、
$this->dataから条件を作り出す所までもうちょっと
コントローラでやる仕事が増えるだろう。
それでもコントローラの処理(モデルを呼び出すところまで)はこれだけ。
俺ならこのように作るよ。
あとモデルから戻ってきたデータを、ビューで使いやすいように
単純化するのもコントローラの仕事だね。
0546nobodyさん
2008/04/02(水) 17:59:00ID:???> モデル上で別のモデルのデータ取得できなくね?
モデル上で別のモデルのデータを使用したいと思ったとき、
その二つのモデル間には関連性がある。
つまりアソシエーションを定義している。
アソシエーションを定義しているのなら、
モデル内で、別のモデルを呼び出すことが出来る。
Model1の中から、$this->Model2->findAll(); 感じで呼び出せる。
■ このスレッドは過去ログ倉庫に格納されています