[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 02/18 06:00 / Filesize : 225 KB / Number-of Response : 899
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 16ホール目【v2.4】



1 名前:nobodyさん [2013/09/09(月) 01:56:10.19 ID:m9OPw/HT]
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

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

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

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

kohada.2ch.net/test/read.cgi/php/1354593996/l50

557 名前:nobodyさん mailto:sage [2013/11/26(火) 17:50:46.60 ID:???]
xampp
Cakephpvar2.3.10
でSmartyの3.1.15導入してみた。
tplファイルがない場合に選択されるctpファイルでの表示がおかしい。
HtmlHelper関連だと思うのだけどどなたか解決方法教えてください

558 名前:nobodyさん mailto:sage [2013/11/26(火) 18:08:22.89 ID:???]
>>553
wordpressのプラグインとか作ってても
ドキュメントに無いソースの奥に眠る関数とか探して調べるのにすごい疲れたわ

559 名前:nobodyさん mailto:sage [2013/11/26(火) 20:04:02.44 ID:???]
(WP早く滅びて)

560 名前:nobodyさん mailto:sage [2013/11/26(火) 20:20:25.47 ID:???]
>>559
わかるわー。
WordPressが無ければどれほどプログラマーが稼げてたか。

561 名前:nobodyさん mailto:sage [2013/11/26(火) 20:29:19.30 ID:???]
せめてまともなプログラマがWordPressを書いていれば…
あんな意味不明なぐちゃぐちゃなコードどうやってメンテしてんだろう

562 名前:nobodyさん mailto:sage [2013/11/26(火) 21:37:55.32 ID:???]
>>561
大成できないタイプだな

563 名前:nobodyさん mailto:sage [2013/11/26(火) 22:03:23.94 ID:???]
WP使えばなんでも安く・早く・簡単に出来ると思い込む奴ってなんなの?

564 名前:nobodyさん mailto:sage [2013/11/26(火) 22:05:01.70 ID:???]
プラグインの多さだけがとりえですしお寿司

565 名前:nobodyさん [2013/11/26(火) 22:30:57.24 ID:nldP7I2h]
wordpress って最高だよね。
無料でここまで何でも出来るCMSとかこのスレの馬鹿グラマには出来ないでしょうね。



566 名前:nobodyさん mailto:sage [2013/11/26(火) 22:48:15.61 ID:???]
お前らがWPに恨みたっぷりなのは分かった
せめてCakePHPで作られたCMSの話を……

567 名前:nobodyさん mailto:sage [2013/11/26(火) 22:50:57.41 ID:???]
>>557
Smartyを破棄する

568 名前:nobodyさん mailto:sage [2013/11/27(水) 00:18:20.01 ID:???]
CakeでもWPでも仕事するしおすし。
CakePHPベースのCMSは、なんかなぁ、
どうせCakeなら自分で好きなようにしたくなっちゃう感じする。

569 名前:nobodyさん [2013/11/27(水) 00:25:51.15 ID:Rk4EDw/d]
wordpress って素敵だなぁー

570 名前:nobodyさん mailto:sage [2013/11/27(水) 01:30:39.60 ID:???]
>>569
ユーザーから見える所はな

571 名前:nobodyさん mailto:sage [2013/11/27(水) 01:57:50.96 ID:???]
ユーザー数が多いからWordPressには安心感があるよ。
どんなにドツボにはまってても、
あぁ、この泥沼に世界中の見知ら人が
何万と埋もれてるんだろうなという
温もりがWordPressにはある。

572 名前:nobodyさん [2013/11/27(水) 03:22:25.52 ID:mdMZh+Ob]
最強に糞だったCMS

Moval Type

573 名前:nobodyさん mailto:sage [2013/11/27(水) 06:23:21.20 ID:???]
>>572
スペリング違うけど、クソなのは同意。2.xに初めて触ったときは感動したけど、4.xで卒業したよ。最近のは知らない

574 名前:nobodyさん mailto:sage [2013/11/27(水) 22:12:09.37 ID:???]
だからさぁ
cakeもプラグインをもっとメジャーにしようよ
wordpress派も流れて来るから

575 名前:nobodyさん mailto:sage [2013/11/28(木) 01:28:07.13 ID:???]
こないこない
wordpressはphpなんて知らない人用のもの



576 名前:nobodyさん mailto:sage [2013/11/28(木) 06:31:59.63 ID:???]
新人研修で、汚いプログラムの例としてWordPressのソース見せてる

577 名前:nobodyさん mailto:sage [2013/11/28(木) 10:50:04.35 ID:???]
うちの研修では、
商業的な成功には理念的な完成度は不要である例として
WordPressを引き合いに出してる。

578 名前:nobodyさん mailto:sage [2013/11/28(木) 11:11:40.35 ID:???]
WordPressって商業的に成功してんの?
無料配布でしょ?

579 名前:nobodyさん mailto:sage [2013/11/28(木) 11:35:10.00 ID:???]
allthingsd.com/20120425/automattic-grows-up-the-company-behind-wordpress-com-shares-revenue-numbers-and-hires-execs/

>>578
かなり儲かってるよ

580 名前:nobodyさん mailto:sage [2013/11/28(木) 11:36:57.69 ID:???]
www.crunchbase.com/person/matt-mullenweg

581 名前:nobodyさん mailto:sage [2013/11/29(金) 02:16:14.63 ID:???]
Fat Controllerはもちろんだめ。
Fat Modelになりすぎてもだめ。
むずかしいよ、最初からそんな見通せないから、ついモデルに書いて太らせてしまって、
行数増えすぎてからうあーってなるよ。
ComponentとBehaviorも、気軽に作ってると数ばっか増えて、煩雑になってくる。
特にComponentが、コントローラーにもモデルにもアクセスできちゃうから、
つい責任持たせすぎになっちゃうよ。

582 名前:nobodyさん mailto:sage [2013/11/29(金) 06:26:18.01 ID:???]
>>581
うあーってなるん?

583 名前:nobodyさん mailto:sage [2013/12/01(日) 15:08:36.60 ID:???]
会社のサイトに簡単なメールフォーム付けようと
久々に素のPHP書いたら、メチャクチャに面倒臭く感じた
でもそれだけにCakeとか使うのもなあ…。

584 名前:nobodyさん mailto:sage [2013/12/01(日) 16:08:25.46 ID:???]
>>583
ちょっと大きめのライブラリを導入した、ぐらいに思っておけば幸せかもよ

585 名前:nobodyさん mailto:sage [2013/12/01(日) 18:00:34.36 ID:???]
>>583
それ単に、メールの仕様が複雑なだけだから。



586 名前:nobodyさん mailto:sage [2013/12/01(日) 21:20:50.87 ID:???]
メールフォーム作るなら既存の小さいライブラリ使いたいな
メール用にはSwiftMailer選ぶんだけどバリデーションの部分はたまに悩む

Symfony2みたいなコンポーネントごとの独立性の高いFW知ってるなら
一部のコンポーネントだけ使えばいいらしいが

587 名前:nobodyさん mailto:sage [2013/12/01(日) 21:35:29.81 ID:???]
Cakeでも頑張ればいけるんじゃね
メール:CakeEmail
バリデーション:Model/Validator
フォーム:Formヘルパー

いや面倒だな`,、('∀`) '`,、

588 名前:nobodyさん mailto:sage [2013/12/01(日) 21:58:22.92 ID:???]
cake関係ないかもしれんけど、フルスクラッチっていうの?サイトのシステムを全部作り直すのってどれくらい経過してからやればいい?

cakephp1のシステムを1年前に作ったんだが2で作り変えるか。。。迷い中。

ヤフーとかグリーとかミクシーみたいなでかい企業はどれくらいの頻度でやってるんだろ?

589 名前:nobodyさん mailto:sage [2013/12/01(日) 22:06:14.84 ID:???]
>>588
そういう企業は複数のシステムを持ってるものだから、一気に全部を作り直したりはしない
少しずつ手を付けていく

590 名前:nobodyさん mailto:sage [2013/12/02(月) 00:36:17.56 ID:???]
お問い合わせフォームのように、一部だけCakeで作ろうとしても
大体は「全体のデザインの中にフォームがある」ってスタイルになるから、
レイアウトやテンプレートをCakeで作らなければいけない。

そうなると、元々ある静的な部分を更新したら当然Cake側も更新しないと
整合性が取れないわけで、手間やコストが2倍に膨らんでしまう。

結局、Cakeやフレームワークを使うなら、全てそれで管理しないといけなくなる。

591 名前:nobodyさん mailto:sage [2013/12/02(月) 09:12:38.83 ID:???]
Cake関係ない話だけど
ちょこっと導入できるような小さなメールフォームのライブラリが、案外ぐぐっただけじゃ見つからなくて
これ以上探す時間が勿体無いから自分で書こうと思った
CAPTCHAのライブラリはすぐ見つかったので、それはさくっと採用したけど

とにかくさっさと動くようにして終わらせたくて、テストも書かずに作ったので
ブラウザでいちいち動作確認して、面倒臭かった

592 名前:nobodyさん mailto:sage [2013/12/02(月) 09:38:56.13 ID:???]
>>587
CakePHPの一部をコンポーネント/ライブラリとして他所で使う例を調べようと思ったが
CakeのControllerのComponentの話とCakeにサードパーティのライブラリを導入する話しか出てこない

593 名前:nobodyさん mailto:sage [2013/12/02(月) 18:03:31.67 ID:???]
上でメールフォームの話題が出てるから試してみたんだけど、

/public_html
└contact.php
/cakephp
└/app
└/webroot

こういう構成だったとして、contact.phpにアクセスしたら
ContactControllerのindexを実行したいと思い、

#contact.php
$_GET['url'] = '/contact/';
require '../cakephp/app/webroot/index.php';

#webroot内の.htaccessのindex.php箇所
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

こんな風にしてexample.com/contact.phpにアクセスしたんだけど、
「Contact.phpController could not be found.」ってエラーが出た。
やっぱ、public_htmlをアプリケーション化しないと無理なのかな?

594 名前:nobodyさん mailto:sage [2013/12/03(火) 00:14:57.84 ID:???]
突っ込みどころ満載すぎてどこから書けばいいのか

595 名前:nobodyさん mailto:sage [2013/12/03(火) 08:50:43.83 ID:???]
>>594
一個ずつ突っ込んでくれ



596 名前:nobodyさん mailto:sage [2013/12/03(火) 09:30:31.38 ID:???]
>>595
漫才みたいになるけどいい?

597 名前:nobodyさん mailto:sage [2013/12/03(火) 13:43:20.44 ID:???]
OK

598 名前:nobodyさん mailto:sage [2013/12/03(火) 14:19:05.43 ID:???]
まず、ファイルとかパスの名前を正しく書け。
全部小文字なわけがない。

599 名前:nobodyさん mailto:sage [2013/12/03(火) 16:50:09.45 ID:???]
>>598
え??

600 名前:nobodyさん mailto:sage [2013/12/03(火) 18:25:14.17 ID:???]
はい、ネタ続けて!

601 名前:nobodyさん mailto:sage [2013/12/04(水) 09:36:02.64 ID:???]
メールフォームだけ作るのって、逆に面倒でもはや他の人に投げたいレベル。
なんか公開されてるのでやろうと思っても、なんか古いCGIを思い出させるのしかないんだよねぇ。
ちょっとバリデーションのところをカスタマイズしたいなと思っても、手を入れにくいし・・・

602 名前:nobodyさん mailto:sage [2013/12/04(水) 09:51:23.15 ID:???]
PHPはいつまでも古い情報が検索の上位に出てくる
たとえ情報が間違っていて時代遅れでも検索上位にあるから初心者に利用されやすい
どんどん変なやり方や糞なプログラムが広がる負の連鎖を断ち切れなくなっている

The Right Wayみたいなベストプラクティスをまとめたサイトが現れるってことは英語圏でも事情は同じってことだな

603 名前:nobodyさん mailto:sage [2013/12/04(水) 09:55:24.07 ID:???]
PHPを書いている人はあまり小さいライブラリを活用しない印象があるなあ
素のPHPかフルスタックフレームワークか完成品かという感じ

604 名前:nobodyさん mailto:sage [2013/12/04(水) 09:57:37.43 ID:???]
どうでもいい雑談になっちゃうけど
htmlspecialchars_decode ってすごい関数名だよなあ
じわじわ笑いがこみ上げてきた、どうしてこうなったんだろ

605 名前:nobodyさん mailto:sage [2013/12/04(水) 10:09:33.35 ID:???]
>>603
メールフォーム程度だと悩む
まともにテストしてあるライブラリを探す手間を惜しんで
自分で全部書いてPHPの謎関数名や謎仕様を再び実感する羽目になる



606 名前:nobodyさん mailto:sage [2013/12/04(水) 10:49:10.54 ID:???]
だいたいメールフォームってPHPを勉強しだした頃に作るからな。
当然、その頃と今ではだいぶ書き方も変わってるわけで、
「昔自分が作ったプログラム」を使いたくないから、1から書きたくなる。

607 名前:nobodyさん mailto:sage [2013/12/04(水) 23:45:10.66 ID:???]
>>604
もともとオブジェクト指向ではなくて
名前空間がなかったから。
名前が被らないようにしようと思えば
どうしても名前は長くなる。

608 名前:nobodyさん mailto:sage [2013/12/04(水) 23:46:52.74 ID:???]
>>605
メール受信じゃなくて送信だろ?
HTMLメールや添付ファイル付きメールを
送ろうとでも思ってるの?

メールフォーム程度なら
文字をエンコードする程度で終わりだろ?

609 名前:nobodyさん mailto:sage [2013/12/05(木) 00:13:14.38 ID:???]
>>608
画像認証

610 名前:nobodyさん mailto:sage [2013/12/05(木) 00:24:35.97 ID:???]
真面目にやるなら外部からの入力は徹底的にチェックするのが基本だよな
GETほど手軽じゃないにせよPOSTのパラメータだってCookieだってリクエストヘッダだって好きにいじれるんだから
自分が書いたHTMLのフォームで設定した以外の値が送られてくる可能性は大いにある

それに一口にメールフォームと言っても入力が名前とコメントだけのものから企業のアンケートフォームまで色々ある
電話番号・郵便番号・メールアドレス・整数……よくある項目に対して毎回1から入力チェックを書く気はしないな
CSRF対策や二重送信防止・画像認証も1から書くのは時間の無駄だし

確かにCakeを持ち出すのは大げさかもしれんが馬鹿が素で書くよりマシじゃね

611 名前:nobodyさん mailto:sage [2013/12/05(木) 00:41:23.84 ID:???]
今どきメールフォームを1から書いて割に合うの?
Webサイト全体をCMSやFWで構築するって話だとフォームは標準装備って感じじゃない?
昔みたいにメールフォーム設置3万円〜とかまかり通らないでしょ?

おしえてぷろのひと

612 名前:nobodyさん mailto:sage [2013/12/05(木) 09:41:31.15 ID:???]
cake2系に対応したbaserCMS3がついにリリースされたそうな
ttp://basercms.net/news/archives/218

613 名前:nobodyさん mailto:sage [2013/12/05(木) 10:21:18.03 ID:???]
で、Cake3のリリースが迫っていると・・・

614 名前:nobodyさん mailto:sage [2013/12/05(木) 10:27:58.21 ID:???]
こないだやっと苦労してCake2にしたばかりなのに、もう3へ以降なんてやらんぞ

615 名前:nobodyさん mailto:sage [2013/12/05(木) 10:38:50.61 ID:???]
>>614
basercmsってcakephpプログラマーからして使いやすいん?
使ったこと一度もないわ。



616 名前:nobodyさん mailto:sage [2013/12/05(木) 10:45:00.73 ID:???]
CMSって言っても特別な機能が入ってるわけじゃないし、
cakeに慣れてる人はcake使うからなw

617 名前:nobodyさん mailto:sage [2013/12/05(木) 12:08:21.04 ID:???]
ようやくCakePHP2になったとはいえ、基本的に古いCakeになるから、
Cakeベースってとこも、最新のが使えないという不便さはあるしなー

618 名前:nobodyさん mailto:sage [2013/12/05(木) 12:23:17.69 ID:???]
今、静的ページと動的(Cakeベース)ページの共存作業をしてるんだが、
レイアウト使わないほうがいいな。
ヘッダー、フッター、サイドバーなんかはelementでまとめて
ピュアPHPのようにHTML上にコード埋め込む形の方が、
デザイナーとの共同作業時に捗るわ

619 名前:nobodyさん mailto:sage [2013/12/05(木) 13:37:55.86 ID:???]
baserCMSは触ってみたけどCakeなだけあってWPよりは断然構造把握しやすかった
カスタムできるお問い合わせフォームがついてるのは嬉しい

ただプラグインもテーマもまだまだ少なすぎる
デフォの機能で間に合うサイトなら使えなくもないかな―

620 名前:nobodyさん mailto:sage [2013/12/06(金) 02:33:30.99 ID:???]
>>618
それで捗る理由がわからん

621 名前:nobodyさん mailto:sage [2013/12/06(金) 09:58:37.69 ID:???]
>>620
レイアウトだとCakeの言語要素が強いから理解するまで難しいけど、、
elementだけなら、includeとかDreaweaverの挿入感覚で使用できるから、
Webデザイナーは一部の修正だけで済み、言語知識を必要としない。
故にWebデザイナーへの説明や、ビューの修正を依頼するときにわかりやすく、
自分の仕事(プログラミング)に専念できるから捗る。

ここまで書く必要ありましたかね・・・

622 名前:nobodyさん mailto:sage [2013/12/06(金) 10:13:37.67 ID:???]
>>621
わかりやすくて良い!

623 名前:nobodyさん mailto:sage [2013/12/06(金) 11:24:56.76 ID:???]
バーチャルホスト設定しているCentOSのサーバでCakePHPの勉強をしたいのですが、

/home/hoge/public_html
/home/fuga/public_html

こんな2つのディレクトリがあった場合、各public_html直下に
Cake本体のディレクトリを配置する感じになるんでしょうか?

624 名前:nobodyさん mailto:sage [2013/12/06(金) 12:02:18.41 ID:???]
>>621
レイアウトもエレメントも同じ仕組みで出来てるし、
その説明読んでも、あえて避ける必要性を感じないなぁ。
自分のアプリの見直してみても、
レイアウトもエレメントもビューも、全部HTMLに多少のifやforeachやヘルパーが入ってるだけで、
レイアウトだけなにか難しいってのは無いように見える。
てか良く考えたら、デザイン側の人にわかんねぇよって言われたこと無かった。

625 名前:nobodyさん mailto:sage [2013/12/06(金) 12:27:57.95 ID:???]
>>623
慣れるまで最初はそれでもいいかもしれんけど
複数のアプリを作ったりしたくて、サーバ丸ごと触れる環境なら
cakephp本体は/usr/local/libとかどこかに1つ置いて
ユーザーディレクトリの中にappの中身を置くようにするのがいいと思う

book.cakephp.org/2.0/en/installation/advanced-installation.html#sharing-cakephp-libraries-with-multiple-applications



626 名前:nobodyさん mailto:sage [2013/12/06(金) 13:57:26.35 ID:???]
>>625
レスありがとうございます。
こういう方法があるんですね。
試してみますー

627 名前:nobodyさん mailto:sage [2013/12/06(金) 19:30:44.10 ID:???]
>>624
「METAタグ挿入したいんだけどどうしたらいい?」
「CSSやJavascriptは?インラインで書きたい時もあるんだけど」
「titleタグもページごとに変更したいんだよね」
「そうそう、パンくずリストはどうするの?」

え〜まだまだ続ける?これら全てCakeの機能で実現できるけど、
Cakeを知らない人は出来ないよね。その前にPHPか。
デザインもプログラムも出来る人なら問題ないかもね。

628 名前:nobodyさん mailto:sage [2013/12/06(金) 19:57:56.87 ID:???]
デザイナにプログラム知識を要求するのは、プログラマの怠慢だと思うな。

629 名前:nobodyさん mailto:sage [2013/12/06(金) 23:30:47.19 ID:???]
プログラムを使ってでしか出来ないものを
やろうとするのが根本的な問題。

だから「お前には無理」で終わればいい。

630 名前:nobodyさん mailto:sage [2013/12/07(土) 02:09:10.25 ID:???]
>>628
プログラマーってのは、デザイナーのために仕事してんじゃねーんだよ。

631 名前:nobodyさん mailto:sage [2013/12/07(土) 03:04:09.81 ID:???]
>>630
それ、逆も言えるよね

632 名前:nobodyさん mailto:sage [2013/12/07(土) 03:05:33.58 ID:???]
仲良くしよう。
できるプログラマーは、デザイナーの事を考えて作る。
できるデザイナーは、プログラマーの事を考えてデザインする。

そう思うんだよね。

633 名前:nobodyさん mailto:sage [2013/12/07(土) 03:16:42.52 ID:???]
どちらも、ユーザーや客やクライアントのことを考えて仕事するべきだろ。
で、自分の領域の仕事をこなす上で必要な知識は身に付けていかないとダメだと思うんよ。

634 名前:nobodyさん mailto:sage [2013/12/07(土) 03:21:24.80 ID:???]
2ちゃんでは正論は伸びない

635 名前:nobodyさん mailto:sage [2013/12/07(土) 07:23:32.80 ID:???]
何の話かよくわからんが
かわいいデザイナーの娘と仕事がしたい



636 名前:nobodyさん mailto:sage [2013/12/07(土) 10:04:31.60 ID:???]
2.3なんだけど、shellのコマンドを実行すると、modelが見つからないとエラーが出ます。
これがいつもじゃなくて、時々起こります。
なんでだろ〜?

637 名前:nobodyさん mailto:sage [2013/12/07(土) 10:09:45.65 ID:???]
CakePHPのビューで読み込むJavaScriptのテストがしたい
ビューのテストはどうやればいいの?調べてもヘルパーのテスト方法しか出て来ない

638 名前:nobodyさん mailto:sage [2013/12/07(土) 10:30:48.05 ID:???]
>>635
まったくだな

639 名前:nobodyさん mailto:sage [2013/12/07(土) 12:21:40.57 ID:???]
なんかデザイナとプログラマを同列に考えてる人多いけど、デザイナのほうが上位だからな。
デザイナー様に無理難題ふっかけるなよ。

640 名前:nobodyさん mailto:sage [2013/12/07(土) 12:30:01.21 ID:???]
>>627
Cakeってそんなに使えないレイアウトのViewしかないんだっけ?

641 名前:nobodyさん mailto:sage [2013/12/07(土) 14:55:19.27 ID:???]
>>635
かわいいけど、HTMLとCSSもおぼつかないイラレ使いのデザイナーとなら、仕事したことある。

642 名前:nobodyさん mailto:sage [2013/12/07(土) 14:58:21.59 ID:???]
>>637
JavaScriptはJavaScriptとしてテストしたらええやん。
画面としてテストしたいならせれにうむを使うやん。

643 名前:nobodyさん mailto:sage [2013/12/07(土) 15:06:54.00 ID:???]
>>642
別にそれでもいいんだけど、テスト用のHTMLやJSはCake内のどこに置くのが定番なん?

644 名前:nobodyさん mailto:sage [2013/12/07(土) 16:41:30.86 ID:???]
>>640
使える・使えないの問題じゃなくて、
Cakeの仕様をデザイナーにも覚えさせるのか?
ってことだと思うが。

645 名前:nobodyさん mailto:sage [2013/12/08(日) 01:28:28.09 ID:???]
【質問】
PHPUnitでHttpヘッダーのステータスコードをチェックするテストコードを書きたいが、
わからない。

【調べたこと】
公式で$this->headersにデータが入っているようなことが書いてあるが、取得できない。
・テストコード
$this->testAction( '/hoge.json', $request ); // 内部でステータスコードを変更するコードを出力
$this->headers // array() が出力される

・エラーコード発生場所(HogeController.php)
$this->response->type( 'json' );
$this->response->statusCode( 400 );
$this->response->body( json_encode( $body ) );
$this->response->send();
$this->_stop();

【前提】
RESTfulなコードを書いている。エラーはステータスコードを4XXや5XXなどとして、
コーディングしたい。

【環境】
CakePHP2.3



646 名前:nobodyさん mailto:sage [2013/12/08(日) 17:12:58.59 ID:???]
HTTPレスポンスヘッダを持ってるのはCakeResponseな

$this->response->header(); //全取得
$this->response->header('Server'); //Serverの値取得
$this->response->header('Server', 'foo server'); //Server: foo serverをセット

647 名前:nobodyさん mailto:sage [2013/12/08(日) 17:17:32.39 ID:???]
$thisの意味わかってんのか心配になるな・・・いやまさか

648 名前:645 mailto:sage [2013/12/08(日) 20:13:36.09 ID:???]
レスありがとうございます。

>>646
CakeResponseの値を確認する場合は、
テストコード上ではHogeControllerのインスタンスはどのように持たせればよいでしょうか?

$this->testAction( '/hoge.json', $request ); 
$this->Hoge->response->header();

ModelでのテストではClassRegistry等を使ってsetupで
テスト側にインスタンスの持たせるかと思いますが、
Controllerのテストではどのようにインスタンスを持たせるのでしょうか?

649 名前:nobodyさん mailto:sage [2013/12/08(日) 20:20:56.25 ID:???]
>>648
ID出せよ

650 名前:nobodyさん mailto:sage [2013/12/08(日) 22:01:22.39 ID:???]
テストってのはさ、どんなものでもテストしてやるぞ!って
意気込みで望むものではなくてさ、
テストがしにくいものを無くすぞって考えてやるべき。

テストしにくい所のコードをついばんでいって、
テストしやすい形に抜き取っていって、
最終的にどうしてもテストしにくい部分だけ最小限にして残す。

テストしにくいと思ったら、そのままのコードで残したらダメだよ。
そのままのコードでテストするなんて愚の骨頂。

651 名前:nobodyさん mailto:sage [2013/12/08(日) 22:31:39.34 ID:???]
>>650
いい事言ってだんろうけど、わかりにくい。わかりやすくお願いします!

652 名前:nobodyさん mailto:sage [2013/12/08(日) 22:32:26.91 ID:???]
あーわかった。
ようは、テストもできねーようなコード書くなということか。

653 名前:nobodyさん mailto:sage [2013/12/08(日) 22:43:19.55 ID:???]
テストできるぐらいの役割に分割しないとね

654 名前:nobodyさん mailto:sage [2013/12/08(日) 23:02:00.09 ID:???]
テストがしにくいコードってのはあるし、
テストをする意味が無いコードもあるんだよ。

一連の処理の中から冗長なコードを取り除いていくと
最終的にはコードというより定義に近くなる。

PHPのスレだからまあ、WordPressのは例を出すと、
wp_config.php これは一応PHPのコードだろ?
だけどこれをテストする意味が俺にはわからない。

設定ファイルでもない限りここまで定義のみに
できることはないけどそれでもテストする意味あるのか?って
思えるほど減らすことは出来るよ。

テストは後付で加えるものじゃない。
テストが出来るようにコードを書いていくんだ。
テストがしにくいと感じたら、テストを書く技術を磨く前に
テストがしやすいコードを書く開発技術を身につけるんだ。

655 名前:nobodyさん mailto:sage [2013/12/08(日) 23:13:20.11 ID:???]
>>645なんてそういうことだよ。

> 【質問】
> PHPUnitでHttpヘッダーのステータスコードをチェックするテストコードを書きたいが、
> わからない。

> $this->response->statusCode( 400 );
って書けば、当然HTTPヘッダのステータスコードは400だろ?

「400という数値を与えれば、それがHTTPヘッダーになる」というテストは必要だよ?
でもそれはCakePHPが開発元がやってるテスト。
400を与えれば当然HTTPステータスは400だし、404って書いていれば当然404だろ?
これ、ただの定義じゃないか。そんなのテストする意味が無い。

ではなくて、本当にテストするべきなのは400になる原因の方だよ。
なんかのデータを引数にしてなんかの処理をやったらエラーになるんだろ?
それをテストするべき。

そのエラーを最終的に400としてクライアントに伝えるというのはただの定義でしかない。



656 名前:645 mailto:sage [2013/12/08(日) 23:53:33.88 ID:???]
>>655
(釈迦に説法ではありますが)RESTfulな設計思想で、エラーを発生させた場合にはエラーメッセージと共に
200以外のHttpステタースコードを投げるのは、異論はないと思います。

論点としては、「RESTful」な設計だとしても
エラーを発生させるような処理を確認するテストの場合に、
エラー発生を「HTTP status code等」でテスト結果を確認すべきか否か?
というところを言いたいのだと思いますが、、、、ここは議論の余地があるかと思います。

> そのエラーを最終的に400としてクライアントに伝えるというのはただの定義でしかない。
現状、クライアント側の実装でも、
「ステータスコードを見て処理を振り分ける」処理があるため、
テストをやっておいた方がいいのではないかと思った次第です。

>>648 についてですが、
testActionなどの後では、$this->controller でインスタンスに
触れるようですが、、、 responseの内容は相変わらず取得できません。

657 名前:nobodyさん mailto:sage [2013/12/09(月) 00:29:29.65 ID:???]
>>656
やらないよりはやったほうがいいけど、意味が少ないというだけ。
そして、費用対効果まで考えるとそこまでやる意味ないんじゃないってこと。

なぜなら400を返すまでのコードが正しければ絶対400返るでしょ?一回確認すれば十分じゃない?
その400を返すコードは400を返すという仕様そのものが変わらない限りもう変えることはないでしょ?
それよりも複雑なのは400を返すまでの仮定であってその仮定が正しければ400返すでしょ?

そういう難しくもなく安定したコードのために、どうやってテストをすればー
なんて言うのなら、やっても時間がかかるだけで効果が無いと思うよ。

> 現状、クライアント側の実装でも、
> 「ステータスコードを見て処理を振り分ける」処理があるため、
もしかしてサーバーとクライアント一緒にしてテストしてない?
サーバー側の実装がどうであれ、400が返って来た場合のテストをすればいい。
だから400を返すだけのアプリ(モック)を使えばいい。
もっと言えば、クライアントだけで400が返って来たかのようにエミュレートさせれば
クライアントだけでテストできる。

どんなものでもテストしてやるぞ。ではなくアプリに手を加えてテストが簡単にできる
ようにするというのはこういう話。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<225KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef