のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,900人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】フレームワーク CakePHP 3ホール目【本命】

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    501 : nobodyさん - 2008/03/30(日) 02:45:33 ID:??? (+27,+29,-17)
    難しい状況を言語化する能力がコミュニケーション能力での重要ポイントだと思う。
    もっと言語化するクセつければ、コミュニケーション能力向上になるんじゃないかな
    502 : nobodyさん - 2008/03/30(日) 17:27:12 ID:??? (-23,-29,-3)
    render呼んだ後
    すぐexit();
    してる?
    503 : nobodyさん - 2008/03/30(日) 20:27:27 ID:3z+xm+ln (-4,+10,-16)
    >>473
    遅レスだが、ソースの頭にBOMを付けたら表示されるようになた。
    が、viewのファイルは8Nで保存しておかないと、たまに悪さをするようだ。
    504 : nobodyさん - 2008/03/30(日) 22:06:44 ID:??? (+23,+29,-1)
    >>502
    もっと常識的な質問たのむ
    505 : nobodyさん - 2008/03/31(月) 10:30:36 ID:??? (+13,+26,+1)
    >>502
    してないよ
    507 : nobodyさん - 2008/03/31(月) 11:00:31 ID:??? (-26,-29,-39)
    cakePHPのテスト環境だけど
    SeleniumとSimpleTestの組み合わせが最強?
    508 : nobodyさん - 2008/04/01(火) 01:26:52 ID:j0Vrw1hD (+26,+29,-66)
    >>507
    そっちのテストなら、セレニウムだろうと手作業だろうとなんだって良くね?

    ユニットテストをするのなら1.2から正式対応したSimpleTestって言うだろうけど。

    ていうか、テスト駆動開発って面倒ですよね、時間がかかるけど出来上がり安定するのは確かだけど。
    509 : nobodyさん - 2008/04/01(火) 01:34:29 ID:??? (+27,+29,-34)
    正確にはテスト駆動じゃないけど、
    ある程度の規模になったら、ユニットテストをやらないなんて
    考えられないよ。

    修正があるたびに同じテストなんてやってられない。
    それこそ時間がかかる。
    512 : nobodyさん - 2008/04/01(火) 20:20:10 ID:??? (+27,+29,+0)
    なにこの寂びれぶり
    513 : nobodyさん - 2008/04/02(水) 00:32:30 ID:Ldo05SB7 (+27,+29,-20)
    んじゃ、おれがこのスレを潤わせてやるぜ
    ビヘイビアって使ってる?
    514 : nobodyさん - 2008/04/02(水) 00:38:10 ID:??? (+31,+29,-45)
    >>512
    荒らしが去ったので落ち着いただけ。

    CakePHPを使って、ようやくサイトを公開できた。
    思ったより使いやすいね、CakePHP。
    515 : nobodyさん - 2008/04/02(水) 03:09:53 ID:??? (+36,+29,-33)
    コンポーネント、ビヘイビア、ヘルパーの中では
    ビヘイビアを一番使うな。

    よくよく考えると、ソフトウェアの中心はモデル。
    その中心の共通処理なんだからよく使うのは当たり前か。
    516 : nobodyさん - 2008/04/02(水) 11:07:25 ID:??? (+71,+29,-96)
    >>515
    ソフトウェアの中心はコントローラー
    なぜならコントローラーはモデルとビューにも指令を出すが
    モデルは、たいていコントローラを介してのやりとりになるから

    そういう考えで行けば、よく使うのはコンポーネントじゃないとおかしい
    517 : nobodyさん - 2008/04/02(水) 11:18:11 ID:Ldo05SB7 (+28,+29,+0)
    >>516
    アフォがあらわれた
    519 : nobodyさん - 2008/04/02(水) 12:05:53 ID:??? (+46,+29,-182)
    うん。アフォだ。ワロタw

    コントローラなんて所詮インターフェースに過ぎんよ。
    実際の処理じゃなくて、ブラウザから引数を受け取って
    それを少々加工してモデルに渡す。
    またモデルから受け取ったデータを少々加工してビューに渡す。

    流れとしてはこんな感じだね。

    「ブラウザ」→「コントローラ(加工)」→「モデル(実際の処理)」→「コントローラ(加工)」→「ビュー(HTML出力)」

    っていうか、このように作らないとテストがしづらいったらありゃしない。

    SeleniumやCakeWebTestCaseがあるとはいえ、
    コントローラを操作してのテストでは範囲が大きすぎる。
    もっと小さな範囲でテストできるようにしないといけない。

    一番重要な処理を最小限の大きさ(なるべく他に依存しない)で
    テストすること考えれば、自然とこうなるはず。
    520 : nobodyさん - 2008/04/02(水) 15:46:57 ID:??? (+27,+29,-13)
    ガソリン安いな~
    これほど自民党の一党独裁の問題点が分かりやすい現象は無いなw
    521 : nobodyさん - 2008/04/02(水) 16:07:32 ID:??? (+38,+29,-28)
    >>519
    そうなんだ。だから本にもモデルのテストの方法しか書いてなかったんだ。
    モデルよりコントローラーをテストしたいんだけど・・・ってずっと思ってた。

    ということは、僕のプログラムの組み方がよくないんでしょうか。
    522 : 516 - 2008/04/02(水) 16:33:04 ID:Ldo05SB7 (+50,+30,-305)
    >>515,>>121
    さきほどはアフォと一言で片付けてしまって申し訳ない、2ch流の愛情表現だと思ってくれ

    で、>>519のいうとおりアプリケーションの中心となるビジネスロジックについてはコントローラなどでは
    なくモデル内で実装するべき。一番大切なテストはビジネスロジックであるわけだし、モデルに集約して
    (かつコントローラとのインタフェースも疎結合にして)コアロジックを実装することでコアロジックを別システムに
    再利用しやすくなるというメリットも受けられる。

    なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべきだし、コントローラ
    内で繰り返しよく使う処理についてはコンポーネント化してあげたほうが、ユニットテストで品質を保証できるので
    良いかと。

    こんな感じで考えていますが、どうでしょう?
    523 : nobodyさん - 2008/04/02(水) 16:44:10 ID:??? (+31,+27,-18)
    >>519
    Seleniumこれだけあれば、全く十分なんだが
    これ以外でテストしようとすればコストかかるだけやろ
    どんくさい作業してんな、赤字やろ?
    524 : nobodyさん - 2008/04/02(水) 16:50:49 ID:??? (+33,+29,-38)
    >>522
    だから何ってかんじだが、それがどうしたんだよ
    リファレンスに書いてあるようなこと、なんで必死に訴えてるのwww

    525 : nobodyさん - 2008/04/02(水) 16:52:59 ID:??? (+14,+21,-13)
    自演厨きたー。うぜえええ
    526 : nobodyさん - 2008/04/02(水) 16:56:38 ID:??? (-29,-30,-152)
    Seleniumなんかでテストしたら時間(=コスト)がかかるよ。
    ブラウザを起動する為、そもそも動作が遅いってのもあるが、

    Seleniumだといくつものモジュールが組み合わさった状態で
    テストするしかないから、どこのバグがあるのか見つけにくい。

    またデータの初期化などが出来ない。
    途中で内部のデータを調べることも出来ない。

    CakePHPにはSimpleTestでブラウザをエミュレートした状態の
    テストもできるので基本はそれを使ったほうが良い。

    Seleniumを使うとしたら、SimpleTestではできない
    JavaScriptが絡んだ処理のテストぐらいだな。
    527 : nobodyさん - 2008/04/02(水) 16:58:43 ID:??? (+27,+29,-46)
    リファレンスに書いてあるようなことなのだから、
    間違いではないということだなw
    528 : nobodyさん - 2008/04/02(水) 17:01:36 ID:??? (+39,+29,-215)
    >>522
    アプリケーションの中心となるビジネスロジックて何?
    どんなロジック?

    一番大切なテストてどんなテスト?

    >>モデルに集約して
    (かつコントローラとのインタフェースも疎結合にして)コアロジックを実装

    プラグインと違うの?

    >>なので、コントローラはある意味、テストをしなくても問題ないくらい「薄い」実装にするべき

    モデルとビューに命令出すのに薄い実装なんて物理的に無理
    モデルはカラッポでOK
    529 : nobodyさん - 2008/04/02(水) 17:04:44 ID:??? (-13,-8,-22)
    >>526
    ブラウザ上でテストするだけなのにモジュールとか関係ないしwww
    JavaScriptテストやるなら加工しないと出来ないだろwww
    532 : nobodyさん - 2008/04/02(水) 17:08:48 ID:??? (+31,+29,-3)
    内部のデータを調べるようなテスト時間かかるに決まってるやろ
    533 : nobodyさん - 2008/04/02(水) 17:09:00 ID:??? (+21,+28,-3)
    また、例の嵐だな。
    534 : nobodyさん - 2008/04/02(水) 17:09:39 ID:??? (+22,+28,-2)
    とりあえず言っておくけど、CIは糞だから、
    糞スレでやってねw
    535 : nobodyさん - 2008/04/02(水) 17:13:49 ID:??? (+20,+22,+0)
    >>532
    たしかに!
    536 : nobodyさん - 2008/04/02(水) 17:16:18 ID:??? (+6,+6,+1)
    >>522
    日本語でおk
    537 : nobodyさん - 2008/04/02(水) 17:18:56 ID:??? (+52,+30,-238)
    なんか、CI普及の為(?)にわざとアフォなことを言っている気がする。
    いや、まて、わざと悪い例を出しているのか?

    まあ、訂正している俺は考えをまとめられていいけどな。
    (そして訂正している文を見て学習する人もいるだろう)

    > モデルとビューに命令出すのに薄い実装なんて物理的に無理
    > モデルはカラッポでOK

    コントローラが出す命令はすごく小さなものだよ。
    モデルに対して、「データ取って来い!」「書き込め!」「削除しろ!」
    そして、「複雑な一連の処理をしろ!」

    前三つは、CakePHPの自動生成コードでも書いてあるから
    簡単にわかると思うけど最後の「複雑な一連の処理をしろ!」を
    モデルに書くべきってことをわかってない人が多いんだよね。
    複雑な一連の処理をコントローラに書いてしまう。悪い例だ。
    538 : nobodyさん - 2008/04/02(水) 17:27:44 ID:??? (+32,+29,-9)
    >>537
    テストのことを考えていってんの?俺はテストはブラウザでしかしないからw
    539 : nobodyさん - 2008/04/02(水) 17:29:17 ID:??? (+27,+29,-10)
    テスト中心に設計するならモデルに詰め込めるだけ詰め込めばいいんじゃね
    540 : nobodyさん - 2008/04/02(水) 17:30:57 ID:??? (+33,+29,-25)
    >>537
    複雑な一連の処理を具体的に述べよ
    はなしはそれからだ
    541 : nobodyさん - 2008/04/02(水) 17:32:26 ID:??? (-26,-23,-7)
    where が入るような条件文はモデルに書けばいいの?
    542 : nobodyさん - 2008/04/02(水) 17:33:42 ID:??? (+33,+29,-4)
    >>537
    モデルにもっていっていいのは
    どこからどこまで?
    543 : nobodyさん - 2008/04/02(水) 17:45:27 ID:??? (+32,+27,-30)
    >>537
    いくら給料もらってんだよ
    俺はPHPプログラマで36万円
    544 : nobodyさん - 2008/04/02(水) 17:53:38 ID:??? (-24,-20,-6)
     
     
     
    モデル上で別のモデルのデータ取得できなくね?
     
     
     
    545 : nobodyさん - 2008/04/02(水) 17:55:24 ID:??? (-21,-30,+0)
    >>542
    どこまでをモデルでやるかは結局設計しだいだけど、

    >>541
    ユーザーがフォームからの条件入力。URL形式での条件入力
    、つまりコントローラのアクション関数の引数に入る場合。

    その引数をもとにモデルを呼び出すわけだけど、
    このときのモデルの関数は汎用的なfind関数でもいいし、
    もっと簡単に扱いたければ、モデルに専用の関数を作って呼び出す。

    汎用的なfind関数を使う場合には、array('key' => '= ' . $value)なんて
    条件データに加工しないといけないよね? これがコントローラの処理。

    モデルに専用の関数を作る場合、もっと簡単に使える関数にするね。
    もちろんその場合、モデル内部でfind関数を使うことになるだろうし、
    そのための条件の加工もモデルに書く。

    ユーザーの入力した条件が、POSTでくる場合は、
    $this->dataから条件を作り出す所までもうちょっと
    コントローラでやる仕事が増えるだろう。

    それでもコントローラの処理(モデルを呼び出すところまで)はこれだけ。
    俺ならこのように作るよ。

    あとモデルから戻ってきたデータを、ビューで使いやすいように
    単純化するのもコントローラの仕事だね。
    546 : nobodyさん - 2008/04/02(水) 17:59:00 ID:??? (-13,-29,-125)
    >>544

    > モデル上で別のモデルのデータ取得できなくね?

    モデル上で別のモデルのデータを使用したいと思ったとき、
    その二つのモデル間には関連性がある。

    つまりアソシエーションを定義している。
    アソシエーションを定義しているのなら、
    モデル内で、別のモデルを呼び出すことが出来る。

    Model1の中から、$this->Model2->findAll(); 感じで呼び出せる。
    547 : nobodyさん - 2008/04/02(水) 18:01:31 ID:??? (+22,+29,-25)
    >>545
    モデルから戻ってきたデータを、ビューで使いやすいように単純化

    数字にコンマ付けたりとか?
    549 : nobodyさん - 2008/04/02(水) 18:05:48 ID:??? (+29,+29,-29)
    >>546
    わざわざアソシエーションするの?
    いつも結合されて重くなるじゃん
    550 : nobodyさん - 2008/04/02(水) 18:06:46 ID:??? (-23,-29,-136)
    >>547
    それは見た目を変えるだけだからビューの仕事だろうね。

    モデルから戻ってきたデータとは、汎用的なfind関数の場合、

    $data => array(
     モデル名 => array(
      フィールド名1 => 値1,
      フィールド名2 => 値2,
      フィールド名3 => 値3,
     )
    )

    こんな値が返ってくる。もちろん、これをそのまま
    ビューに渡してもいいんだけど、これじゃあビューで使いにくい!
    って言う場合加工する。

    そんな場合あるのかって? 余り無いだろう。
    そう、だからコントローラの仕事は少ない。

    モデルから取得した値をビューに渡す$this->set(・・・) は
    コントローラの仕事ね。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について