【PHP】フレームワーク CakePHP 2ホール目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/11/14(水) 02:50:28ID:???http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0320nobodyさん
2008/01/27(日) 14:20:46ID:???さっき落とした状態の1.2でやってみたんだけど、
変数宣言していなくても時間がかかることはなかった。
きっとどこかで何かをやっているのだろうがソースは会社なのでw
そういやバリデーション部分でひとつ不満が。
たとえば、1から5までの値を受け付けるバリデーションを作ったとして、
エラーメッセージを、「1から5まで数値を指定してください。」って
表示することはできないよね?
もちろん、1から5までという数値はパラメータで変更可能。メッセージも同じく。
0321nobodyさん
2008/01/28(月) 01:30:21ID:???Router::connect('/', array('controller' => 'pages', 'action' => 'display'));
て設定してる時にクッキー消して(use_trans_sid onで)
http://myapp/?CAKEPHP=e233bd9c1facda8084d8ba2f2226eb60 でアクセスすると
Error: CAKEPHPe233bd9c1facda8084d8ba2f2226eb60Controller could not be found.
そんなコントローラーねえよって怒られちゃう
Router::connectの書き方誰か教えてくらさい
0322nobodyさん
2008/01/28(月) 12:43:25ID:???クッキーを使っている場合と同様のデータの持ち方に
変換すればいいと思ったがやり方しらねw
0323321
2008/01/28(月) 22:42:45ID:???0324nobodyさん
2008/01/28(月) 23:44:38ID:???0325316とか
2008/01/30(水) 12:21:18ID:???どうやら、デバッグ機能としてエラー発生時に
わかる範囲すべての変数を出力しているみたい。
だからモデルとかヘルパーとかいろいろ使っているほど遅くなる。
/cake/lib/debugger.php の __outputの以下の行をコメントアウトすれば
時間かからないようになる。もちろんデバッガ機能は落ちるけど。
foreach ((array)$kontext as $var => $value) {
$context[] = "\${$var}\t=\t" . $_this->exportVar($value, 1);
}
0326nobodyさん
2008/01/31(木) 03:14:54ID:???beta使ってるんだけど、HTMLは良くても、rssの場合だとFFでエラーが出てしまう…
あるhelperの最後の?>のあとに改行が入っていたせいで、それが出力されていたみたい。
0329nobodyさん
2008/01/31(木) 17:50:39ID:???0331321
2008/02/01(金) 03:13:35ID:???最新のbranchならfixされてるよ って開発者のレスがついて
最新のbranchにしたけど解決しなかった
んでそのまま放置されてる 今のところ以上
0332nobodyさん
2008/02/01(金) 17:28:50ID:???基本的にclickで動作するように作られているからmouseoverで
動作させるためにはコアに手を入れなきゃいけなくなると思うんだけど。
0334nobodyさん
2008/02/01(金) 21:05:31ID:???わざと機能を制限しているので逆に使いやすいかもしれない。
自分でライブラリ作っててわかるけどあれもこれも設定できるようにすると
逆に使いづらくなるからね。
0336nobodyさん
2008/02/02(土) 00:57:26ID:???簡単に一般的な大多数の開発をサポートする事を目標としてるんだろうし。
どうしてもって言うならコンポーネントとか作ればいいんじゃね
標準で対応するには一般的じゃないって事だと思うが
0337332
2008/02/02(土) 19:02:48ID:???アクションがあるというのはけっこう使うと思うけどなあ…
しょうがないから自分で作ってやってるけど。
0338nobodyさん
2008/02/07(木) 12:02:24ID:???良くある説明ページが
class MyTestCase extends CakeTestCase {
var $TestObject = null;
function setUp() {
$this->TestObject = new 〜〜;
}
function tearDown() {
unset($this->TestObject);
}
}
ってなっているんだけど、setUpが実行されるタイミングが
いまいちつかめない。なんか想定外に実行されるし。
また、fixturesを使ったとき、テーブルが作られるタイミングが
どうも???でテーブルが無いといわれたり。
んで、ざっくり調べたところ、
startCase/endCaseとstartTest/endTestというのが見つかった。
これだと、以下のコードで次のように想定どおりに表示される。
startCase -> startTest -> endTest -> startTest -> endTest -> endCase
0339nobodyさん
2008/02/07(木) 12:03:02ID:???var $TestObject = null;
function startCase() {
pr('startCase');
}
function startTest() {
pr('startTest');
}
function endTest() {
pr('endTest');
}
function endCase() {
pr('endCase');
}
function test1() {
$this->assertTrue(true);
$this->assertTrue(true);
}
function test2() {
$this->assertTrue(true);
$this->assertTrue(true);
}
}
0340nobodyさん
2008/02/07(木) 12:03:45ID:Ja8AUMIGstartCase/endCaseで足りると思うんだが、setUp、tearDownは何の為に使えばいいのだろう?
で、まだ良く調べていないのが、fixturesで追加したテーブルがどうなるか。
動きを見てみると、startTestが実行する直前に毎回リセットされてるようだ。。
だからstartTest前にCREATEしてendTest後にTRUNCATEしているようだが・・・
こういうレベルでちゃんと説明しているところがほしい。
0341nobodyさん
2008/02/07(木) 12:42:55ID:???0342nobodyさん
2008/02/08(金) 15:28:07ID:???0343nobodyさん
2008/02/08(金) 17:25:37ID:???こっちがあるよ。
0344nobodyさん
2008/02/08(金) 19:11:40ID:???商品をカートに入れるとカートの画面に飛ぶ。
そこからログインをクリックしてログインページへ。
ユーザー・パス入れてログイン。
そしたらカートの画面に戻っている。
そして状態でもカートに商品は残ったまま。
ログアウトボタンをクリック。
そしたらカートから商品は削除されている。
(当然この一連の処理にクッキー・セッションが使われている。)
という一連のテストを自動化できちゃったよ。
(一度書いたら何か修正しえてもそれを実行するだけ)
0345nobodyさん
2008/02/09(土) 00:52:29ID:???0346nobodyさん
2008/02/09(土) 14:25:58ID:???dreamweaver cs3 使ってますよ。
やっぱりこれが最強じゃないですかね。
プログラム、デザインの両方に特化していますので。
0347nobodyさん
2008/02/09(土) 17:09:18ID:???0348nobodyさん
2008/02/09(土) 23:16:53ID:???0349nobodyさん
2008/02/10(日) 01:04:56ID:???って事は人気のあるスポーツはどんどんレベルが落ちてるんだな
0350nobodyさん
2008/02/10(日) 01:17:48ID:???レベルが下がってるよ。スポーツは
0351nobodyさん
2008/02/10(日) 01:37:18ID:???部外者からみてもピラミッドが見えるようにすればいい。
0352nobodyさん
2008/02/10(日) 14:24:03ID:???こんなリレーションなんですが、A->findAll()すると、Bしか付いてきません。
B->findAll()とすると、Cが付いてきます。
A->findAll()でB,C一緒に持って来たいのですが、どのようにしたらよいのか分かりません。
どなたかヒントをください。
0353nobodyさん
2008/02/10(日) 14:24:47ID:???0354nobodyさん
2008/02/10(日) 14:31:15ID:???A->findAll("","","","","",'3')
これでいけました。
0355nobodyさん
2008/02/10(日) 14:37:22ID:???なるほど。なんか納得。
web上ではプロは目立たず素人ばっか目立つから変な感じに見えるのか。
0356nobodyさん
2008/02/10(日) 15:35:17ID:???ごくわずかでそういうものに手を出す人は
詳しい人が多い。
実際は、使う人の問題なのに、
言語の問題といいはるRuby凶なんてのがいたな。
0357nobodyさん
2008/02/11(月) 00:25:02ID:???自分が何か情報を出すとライバルに盗まれるかも、とか足を引っ張られるかも、とか思ってるんでしょ。
もうちょっと余裕のある人はちゃんと次を育てていける。
いきなり素人が…とか言い出したりしないだろ普通。
0358nobodyさん
2008/02/11(月) 00:28:41ID:???新人には仕事教える立場だし。
0359nobodyさん
2008/02/11(月) 02:35:25ID:???ネットに限って言えば、プロな人がいろいろ露出するのって、ほぼ趣味なんじゃないか。
PHP界隈が、趣味でやるほどの魅力がない、仕事用の言語って感じだからじゃないの?
0360nobodyさん
2008/02/11(月) 02:54:33ID:???言語そのものが目的だからなw
0361nobodyさん
2008/02/11(月) 03:20:56ID:???0362nobodyさん
2008/02/12(火) 08:45:57ID:???一括で更新とかするSql文とか作ってるわけじゃないの?
0364nobodyさん
2008/02/13(水) 00:39:35ID:jaUT9mg5単体で使える共用のビューを作りたい時はどうすればいいの?
app/views/common/common.ctpみたいな感じ
0366nobodyさん
2008/02/13(水) 02:07:27ID:???0367nobodyさん
2008/02/13(水) 20:01:16ID:jaUT9mg5どうもありがとうございます
0368nobodyさん
2008/02/14(木) 11:30:58ID:???→最後にOKで処理実行のようなページを作るにはどうしたらいいの?
ページごとにエラーチェックしたり、前の入力項目の値を元に
次のページを決めたり、想定外のページ変移に対応したりもしたい。
0370nobodyさん
2008/02/14(木) 16:32:15ID:???まあ今はaction一つでやってるんだけど。
なんか一つにごちゃごちゃあって見にくいなぁと
それにページ間での値の参照・共有したいし
なんか良いやり方無いのかなぁ?
0371nobodyさん
2008/02/14(木) 16:35:18ID:???0373369
2008/02/14(木) 16:55:00ID:???actionも1個でやる。controller側ではページ分割されていることを意識しない。
1ページ目のpostは、2ページ目以降の項目が未入力と見做してエラー扱い。
表示の調整をviewでやる。
まあ思い付いただけなんで上手く行くかは分かりません。
0374nobodyさん
2008/02/14(木) 18:23:10ID:???一ページ目入力、ニページ目入力、三ページ目入力・・・してる途中で
一ページに戻る、一ページ目訂正、
二ページ目はさっき入れたのが表示されているからそのまま次へ。
三ページ目入力
みたいな。
0375nobodyさん
2008/02/14(木) 18:27:55ID:???> セッションでデータ保持して、ページ移動はredirectとかすればいいんじゃね
汎用的過ぎて参考にならないよw
ほぼすべてのウェブアプリはセッションかデータベースにデータ保持して
ページ移動はredirectとか使っている。
0376nobodyさん
2008/02/14(木) 18:33:04ID:???0377369
2008/02/14(木) 19:39:04ID:???マイナス1ページはプラス1ページと同じだから問題ないと思うけど、
ページを飛ばすのは処理増やさんといかんなあ。
入力値でページ分岐もややこしそうだ。
あと、未入力エラーを出すか出さないかの判断も必要か。
0378nobodyさん
2008/02/14(木) 21:58:46ID:???いかに管理しやすくするかということかな。
PHP5だと普通にインスタンスをセッション保存できるから、
複数ページで1インスタンスを共有というのもありでしょう。
0379nobodyさん
2008/02/15(金) 04:03:48ID:???もっと普通のウェブアプリ作れ。
0381nobodyさん
2008/02/15(金) 06:47:51ID:???セッションでデータ保持するのはバカだろ
0383nobodyさん
2008/02/15(金) 09:08:38ID:???0384nobodyさん
2008/02/15(金) 10:10:41ID:???いや、Cakeならそのケースでどうするかということで
フレームワークによってセッションの扱いは少しずつ異なるし。
0386nobodyさん
2008/02/15(金) 15:43:58ID:???俺ほぼ全部を受け渡してるけどな。
だってIDのみだったら他の情報がを表示するときとかっていちいちDBから拾ってくるの?
まぁ、変更するときはDBを更新する必要があるんで接続はするだろうけど。
0387nobodyさん
2008/02/15(金) 15:56:24ID:???そのくらいいいじゃん。
0388nobodyさん
2008/02/15(金) 16:55:19ID:???基本的に大量データを引っ張てくるキーだけ保存するもの
0389nobodyさん
2008/02/15(金) 16:59:50ID:???いちいちDBから拾うのが基本
セッションは会員IDなど必要最小限のデータだけ入れるべき
データ大量に保存して持ちまわすものじゃない
0390nobodyさん
2008/02/15(金) 17:01:59ID:???セッションについて何もわかってないみたいだ
0391nobodyさん
2008/02/15(金) 17:04:23ID:???0392nobodyさん
2008/02/15(金) 17:05:37ID:???0393nobodyさん
2008/02/15(金) 17:12:24ID:???セキュリティ的にもやばいし
ページの前に戻ると不具合がおこりやすい
常に大量データ持ちまわすことはメモリ、CPUに負荷がかかる
0394nobodyさん
2008/02/15(金) 17:14:11ID:???0395nobodyさん
2008/02/15(金) 17:18:54ID:???ページまたぎ処理はパラメータで引き継げよ
0396nobodyさん
2008/02/15(金) 17:27:06ID:???>セキュリティ的にもやばいし
どういうとこが?セッション固定化とかは別の話だし
>ページの前に戻ると不具合がおこりやすい
具体的にどんな不具合?
セッションでフロー管理してるからhiddenよりも厳密にできたりするんだけど
>常に大量データ持ちまわすことはメモリ、CPUに負荷がかかる
大量っていっても、多くても数kとかだし。
何かしらのキーで毎回ストレージから取得するのも処理コストあるよね
0397nobodyさん
2008/02/15(金) 17:32:39ID:???俺はセッションに入れる派。
0398nobodyさん
2008/02/15(金) 17:47:48ID:???yahooなどの超有名サイトほど、ログイン処理など
きわめて便利でないとこ以外はセッションを使ってない
0399nobodyさん
2008/02/15(金) 17:48:37ID:???0400nobodyさん
2008/02/15(金) 18:01:38ID:???データの引継ぎが途中で止まる
hidddenにデータがはいってないので
最初からページ移動のやりなおし
0401nobodyさん
2008/02/15(金) 18:13:03ID:???hiddenは値をいくらでも改竄できるからどうも・・・。
それすると挙動がおかしくなるサイトもあるし。
まぁ、それはそこの実装者が悪いだけなんだけど。
今のところセッションの方が生産性高いから、セッションで実装しちゃうな〜
0402nobodyさん
2008/02/15(金) 18:16:11ID:???セッション多様は開発者が楽するためのもので
サイト運営者、利用者にとってセキュリティリスクでしかない
0403nobodyさん
2008/02/15(金) 18:24:00ID:???0404nobodyさん
2008/02/15(金) 18:49:34ID:I3wnpJfD0405nobodyさん
2008/02/15(金) 19:08:46ID:???リクエストされたパラメータが改竄されていないかどうかをチェックするということか?
そんなことをするならばセッションにデータを格納したほうが効率が良いだろう。
悪意あるリクエストによってサーバセッションの中身を改竄するのは、
パラメータを書き換えるよりは困難だ。
他人のセッションを乗っ取ったり、MITM攻撃などでの手法はまた違う議論。
セッションを使おうが、パラメタを使おうが、適切な処理を行わなければ
どちらもセキュリティリスクになる。
どちらの方法も処理次第では脆弱になりうる。
逆に言えば、どちらの方法でも適切な処理を行えば十分安全になる。
ここでいう*十分安全*という定義はサービスの内容によって異なる。
0406nobodyさん
2008/02/15(金) 19:10:27ID:???具体的に指摘してやるからコード晒してくれ
0407nobodyさん
2008/02/15(金) 19:39:23ID:???他はログインID引き回すぐらいかな
ちなみにCAKEのデフォルト通りにIPでも(自動で)チェックしてるからドコモの人はさよならな俺のサイト
0408nobodyさん
2008/02/15(金) 20:04:49ID:???具体的に?
いや、だから、あるアクションでセッションにデータ入れて関連する他のアクションで参照するっていう、ほんとそのまんま。
コード書くまでもない。
0409nobodyさん
2008/02/15(金) 21:21:34ID:Q8bQtypzhiddenだと改ざんされてしまうし・・・。
けど、何でもかんでもセッションにってのは確かに気持ち悪いわな。
0410nobodyさん
2008/02/15(金) 21:43:28ID:???確認画面の時にバリデートして、DB登録直前にまたバリデートって面倒じゃない?(hidden値改竄の可能性があるから)
セッションだったら確認画面でセットしたデータがDB登録の時になって変わることがないからいいんだけど
0411nobodyさん
2008/02/15(金) 22:23:55ID:???個人的には、セッション変数を使うのが良いと思うが、
セッション変数は手軽に増やせるので、コードの質を低下させるのを気をつけたい。
例えば、index.phpですべてのリクエストを受けて、
$_SESSION['action']で場合分けみたいなコードを編集したことがあるけど、
$_SESSION['action']はsession_start()さえしておけば、コードのどこでも変更できるので、
きちんと規約を決めておかないと副作用で死ぬ。
フレームワークに期待するのは、そういう規約の部分なんだけど。
0412nobodyさん
2008/02/15(金) 22:28:43ID:???Javascriptからしか参照されないJSONで、
ユーザ固有のデータを出すときに、いちいちPOSTしなくて良い点。
遷移の上で孤立したアクションでユーザ固有のデータを使える。
0413nobodyさん
2008/02/15(金) 22:30:54ID:???たとえばセッションのサイズが1MBになったら、
データ読み込みに時間がかかるだろ?
↑
反論
ページ移動するたびに、
1MBものデータをhiddenでクライアントに転送し
それをまたサーバーに送信するようなことをしたら
もっとパフォーマンス悪いだろ?
0415nobodyさん
2008/02/15(金) 23:02:40ID:???0416nobodyさん
2008/02/15(金) 23:05:36ID:???セッション=ファイルなわけで、ファイルに保存するか、
データベースに保存するかの違いしかないんだが・・・
0417nobodyさん
2008/02/16(土) 00:07:09ID:???セッションIDのみでデータベースから読み出して処理するのがベストなのですか。
勉強になりました。ありがとうございます!
0418nobodyさん
2008/02/16(土) 00:20:43ID:???それで終わりだなw
0419nobodyさん
2008/02/16(土) 02:31:23ID:???■ このスレッドは過去ログ倉庫に格納されています