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


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

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



1 名前:nobodyさん [2014/03/01(土) 17:03:24.57 ID:8AJ9GD6E]
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/1378659370/

401 名前:nobodyさん mailto:sage [2014/05/10(土) 14:23:07.62 ID:???]
Composerは確かにほかの言語のと比べて使いにくい印象はあるけど、
git submoduleしないとパッケージのバージョンを管理できないなんて、
なに言ってるかわからないレベルなんだが。
そんなことあるんかね?

402 名前:nobodyさん mailto:sage [2014/05/10(土) 15:56:06.47 ID:???]
お前らのMVCは間違ってる!ってRails式を散々disるスライドがあったが
ものがちゃんと作れれば別にいいわけで、正しいからどうだってのがよくわからん

403 名前:nobodyさん mailto:sage [2014/05/10(土) 17:17:38.04 ID:???]
>>400
DBから取ってきたデータがarrayになってる部分だと思われ
Cake3でようやくオブジェクトになるようだが

404 名前:nobodyさん mailto:sage [2014/05/10(土) 17:24:14.35 ID:???]
それよく聞くけど、オブジェクトの方が便利なん?
書き方が変わるだけのような気がするけど

405 名前:nobodyさん mailto:sage [2014/05/10(土) 17:30:12.91 ID:???]
Cake3を少し試してみたがEntity使えるだけでも結構変わるね
特にViewがスッキリするのはもちろんだけど今までHelperやControllerに溢れがちだったロジックもEntityクラスに置けるのが結構あるしテストも楽
array+Hash・Setに比べたら開発効率やコードの読みやすさは段違いに上がる


でも2から3への移行は大変そう

406 名前:nobodyさん mailto:sage [2014/05/10(土) 17:30:20.29 ID:???]
>>404
Modelのメソッドはすべてstaticです、なんて言ったらJavaやRubyなどのオブジェクト指向に
慣れ親しんだ人たちから見れば、なにそのふざけた設計は?とキレられるレベル

407 名前:nobodyさん mailto:sage [2014/05/10(土) 17:37:51.74 ID:???]
オブジェクトじゃないとActiveRecordパターンとは言えないからなぁ

408 名前:nobodyさん mailto:sage [2014/05/10(土) 20:22:57.11 ID:???]
arrayになった理由はCake1がPHP4をサポートしていたからだろうな
さすがにPHP4でオブジェクト指向にはできなかった、と

409 名前:nobodyさん mailto:sage [2014/05/10(土) 23:47:42.75 ID:???]
PHP4懐かしいな
修飾子やら例外やらオートローダーが無いとか
参照渡ししないとクローンになるとかいろいろあるが
ActiveRecordの足かせになりそうな制約はないな



410 名前:nobodyさん mailto:sage [2014/05/11(日) 13:33:38.34 ID:???]
最近、嫌static厨が多くて困る

411 名前:nobodyさん mailto:sage [2014/05/11(日) 13:37:57.50 ID:???]
static に出来るものはそのほうが良いのにね。
見極めができないんかもな。

412 名前:nobodyさん mailto:sage [2014/05/11(日) 15:03:25.90 ID:???]
「全部static」はさすがに嫌われて当然

413 名前:nobodyさん mailto:sage [2014/05/11(日) 15:07:39.63 ID:???]
さすがにそんなヤツはおらんやろ

414 名前:nobodyさん mailto:sage [2014/05/11(日) 15:08:05.37 ID:???]
staticとかpublicとか分別するとどんなメリットがあるの?もうおっさんだから、今だにわからない。
function hoge を _hogeにする時はあるけど。

どなたかご親切な人
わかりやすく教えてくれませんか?

415 名前:nobodyさん mailto:sage [2014/05/11(日) 15:18:12.11 ID:???]
>>413
CakeのModelはまさに「全部static」なんだが…

416 名前:nobodyさん mailto:sage [2014/05/11(日) 15:37:28.00 ID:???]
>>415


どこを言ってるんだろう

417 名前:nobodyさん mailto:sage [2014/05/11(日) 15:40:10.91 ID:???]
ん、Model.phpを「static」で検索してみたけどひとつもヒットしないよ
調べたverは2.4.6
cake3ではstaticになっているってこと?言葉の使い方がヘンなだけ?

418 名前:nobodyさん mailto:sage [2014/05/11(日) 18:47:27.75 ID:???]
>>398
> つまり結局はタイミングの問題でしかなくて、言語の優劣がどうとか、フレームワークの優劣がどうとか、といった観点は殆ど無く選びました。
つまり結局は、他に行ったから、とりあえず元鞘を叩いておくかっていう3流エンジニアの日常か

419 名前:nobodyさん mailto:sage [2014/05/12(月) 01:19:34.02 ID:???]
>>414
それマジで質問してるならこんなところにいないで
基本的なオブジェクト指向の勉強したほうが良いよ。



420 名前:nobodyさん mailto:sage [2014/05/12(月) 01:30:03.56 ID:???]
>>414
static のメリットをひとことで言うと、状態を持たない(状態が変化しない)
振る舞いを提供することにより、インスタンス化した場合に本来であれば考慮するべき
状態変化の副作用から開放されることではないかと。

まず間違いなく、テストは超簡単になる。

一方、アクセス修飾子のメリットはひとことで言うと
安全な設計が簡単にできるってことではないかと。
その点 CakePHP はメンバー変数の修飾子に public を使いまくってて恐ろしいほどではある。

421 名前:nobodyさん mailto:sage [2014/05/12(月) 01:35:05.49 ID:???]
俺もstaticって使いどころがいまいちわからん。
特にphpはランタイムが短すぎて、1回しか使わないオブジェクトが多く、
staticを変に意識すると、むしろなんでもstaticでいいんじゃないかと思えてきてしまってこわい。
逆にstaticにしないと困るような事も、あんまないから、よくわからないままで結局staticは使わないという

>>414
たとえばモデルに、とある機能を作ってたら100行を超える長いメソッドになってしまい、一部を切り出したけど、
コントローラーから直接切り出したメソッドを呼ばれるのは想定外って場合に、
protectedかprivateにしておけば、呼ばれることがない。

protectedとprivateは、コントローラーやモデルを触ってるくらいなら、
正直使い分けが活きることがほとんどない気がする。
強いて例を出すと、AppController内の処理で切り出したメソッドが、ほかのコントローラーから呼ばれるのが想定外なら、
privateにしておくと呼ばれなくなる。

422 名前:nobodyさん mailto:sage [2014/05/12(月) 01:45:18.99 ID:???]
>>421
>なんでもstaticでいいんじゃないかと

だけどオブジェクトの状態に依存しないメソッドなんて
そうそう作る機会はないと思うんだが、
もし可能なら作って問題無いと思うんだけど?
というか、むしろ作るべき。

423 名前:nobodyさん mailto:sage [2014/05/12(月) 02:01:04.78 ID:???]
>>422
もちろん、思えてきてしまうだけで、よく考えるとダメな事がほとんどなんだけどね。
クラスやメソッドを書き始めるときに、まずこれはstaticにできるか?
と考えると、問題ないような気がしてしまうんよ。

そういえば、かなり昔だけどCakePHPを使い始める前のオレオレフレームワークでは、
データベースアクセスするとこ全部staticメソッドにしちゃってたなぁ。
いわゆるCRUDに対応したメソッドがあるだけだったし、データはオブジェクトじゃなくて連想配列だったから、
インスタンスいらないなぁと思って。
あとバリデーターもstaticメソッドだったなぁ。
バリデーションはコントローラーでやってたから、CakePHPでいうバリデーションルールの配列みたいなのは、
コントローラーに書いて、AppController的な親にvalidateメソッドを作ってた。

424 名前:nobodyさん mailto:sage [2014/05/12(月) 02:19:15.31 ID:???]
このスレにはガチのstaticおじさんが居る気がする

425 名前:nobodyさん mailto:sage [2014/05/12(月) 04:23:13.01 ID:???]
cakeってfindがstaticでないのが不思議でしょうがない

426 名前:nobodyさん mailto:sage [2014/05/12(月) 10:30:47.47 ID:???]
>CakePHPのModelはまさに「全部static」

言いたいことは何となく分かる
他のフレームワークだとModelのstaticメソッドがテーブル(Repository)の操作
インスタンスメソッドがレコード(Entity)ごとの操作に対応してるのが多い

CakePHP2まではEntityがないので
そういう他のFWから入ってModelのインスタンスはEntityだろと決めつけてかかると
ModelにRepositoryの要素しかなくてfindもインスタンスメソッドという点に違和感をおぼえる

CakePHP3だとEntityクラスとTableクラスがそれぞれ用意されるからギャップが減る
クラスが分かれるからfindがインスタンスメソッドなのは変わらないけど
DDDを意識した設計で個人的には好感触


というか他のFWのstaticなfindも
RepositoryないしQueryに相当するオブジェクトのインスタンスメソッドに処理放り投げてるだけだろうし
ただ単に使い勝手とどこまでFWが暗黙的に処理するかってだけの問題な気がする

427 名前:nobodyさん mailto:sage [2014/05/12(月) 10:33:48.09 ID:???]
>>425
状態依存しないメソッドなら問題ないけど
CakePHP の Model のオブジェクトって状態を持ってるから無理だよ。

たとえば同じPostクラスのオブジェクトが2個あったとして
$Post1->id = 1;
$Post2->id = 2;
ってした場合にメソッドが static なら破綻する。

428 名前:nobodyさん mailto:sage [2014/05/12(月) 10:36:05.68 ID:???]
>>426
なるほど

429 名前:nobodyさん mailto:sage [2014/05/12(月) 10:47:42.76 ID:???]
>>427
findと何か関係あるのそれ?



430 名前:nobodyさん mailto:sage [2014/05/12(月) 11:14:24.54 ID:???]
cakeってTable Data Gatewayパターンだと考えれば普通なんだけどな

431 名前:427 mailto:sage [2014/05/12(月) 11:59:05.87 ID:???]
>>429
例えを簡単にするつもりだったが $id は関係無かったか。
要するに find が参照するプロパティのうち
状態依存のものが沢山あるってこと。

例えば
$Post1->primaryKey = sid;
$Post2->primaryKey = cid;
とか

432 名前:nobodyさん [2014/05/12(月) 12:02:34.37 ID:U9jrOtar]
TreeBehaviorsについて質問なのですが、

moveUpやmoveDownがfalseを返してきてまったく動作しません。
発行したSQLを見ると、SELECT文ばっかりでUPDATEをやっていないように見えます。
どうやったら動かすことができるのでしょうか。

433 名前:nobodyさん mailto:sage [2014/05/12(月) 12:18:35.60 ID:???]
>>432
スキーマ、レコード、moveUp moveDown のコード、クエリ
この辺を貼り付けてみて

434 名前:nobodyさん mailto:sage [2014/05/12(月) 12:38:18.89 ID:???]
CakePHPって3でActiveRecordを採用するんだったよな

435 名前:nobodyさん mailto:sage [2014/05/12(月) 13:15:30.27 ID:???]
>>433
DBやレコードはお客のやつなんでまずいんです。ごめんなさい。

スキーマにはちゃんと
parent_id, lft, righ の定義はしてあって、moveUp, moveDown以外のツリー動作は
問題なく動作しています。


public function moveup($id = null) {
   $this->Category->id = $id;
   $res = $this->Category->moveUp($this->Category->id, abs(1)) ;
debug($res);
}

436 名前:nobodyさん mailto:sage [2014/05/12(月) 13:24:21.16 ID:???]
>>431

CakePHPのモデルが状態を持ってることが、むしろ混乱の元になってる気がするけどな。
ループ内でsaveするならcreateしろ、とか。
結局find()したら連想配列を返すし、save()だってモデルにデータ持たせたりせずsave()に引数渡すことばかりじゃない?
よく使うfindとsaveで違和感を感じるだけで、インスタンスである必要な機能もあるけど。

まぁ言いたい事はたぶん >>426 と似たようなことなんだろうけど、
ほかのフレームワークをあまり触ってないから、違和感レベルでしか語れない。

437 名前:nobodyさん mailto:sage [2014/05/12(月) 13:36:54.55 ID:???]
>>435
じゃぁ、verify() した結果を見たらヒントがあるかも

debug($this->Category->verify());

どこかで整合性が崩れてると実行されない可能性有り。

438 名前:nobodyさん mailto:sage [2014/05/12(月) 13:49:48.47 ID:???]
>>437
ありがとうございます。試してみました。

verify()でしばらくかかりましたが、真っ白な画面がリターンされました。
これはツリーに不整合などの異常がなかったということですよね。

439 名前:nobodyさん mailto:sage [2014/05/12(月) 14:00:55.26 ID:???]
>>438

時間かかってなおかつ白い画面ってことはタイムアウトですね。
かなり大きいんですね。
成功すれば bool(true) が返る。

Shell でやってログに書き込んで確認してみたらいいかも。



440 名前:nobodyさん mailto:sage [2014/05/12(月) 14:03:28.70 ID:???]
タイムアウトで白い画面って・・・もしかして本番環境・・・?

441 名前:nobodyさん mailto:sage [2014/05/12(月) 14:04:31.37 ID:???]
TreeBehavior 適用してるテーブルに他のモデルから更新したら
整合性グチャグチャになるから注意

442 名前:nobodyさん mailto:sage [2014/05/12(月) 14:10:08.15 ID:???]
>>439
ありがとうございます。お察しの通りノードが3万以上あるツリーなのです。
白画面はタイムアウトですか。勉強になりました。

TeraTermからサーバにログインし curl コマンドでverifyのURLにアクセスしましたが、
ブラウザから呼んだ時とは違い、瞬時にプロンプトが返ってきてしまいます。

シェルでverifyを実行とは、具体的にはどうすればいいのでしょうか?

443 名前:nobodyさん mailto:sage [2014/05/12(月) 14:11:10.17 ID:???]
>>440
いいえ、本番のデータをまるまるコピーしてきましたが、デバッグ環境です。

444 名前:nobodyさん mailto:sage [2014/05/12(月) 14:12:13.34 ID:???]
>>441
他のモデルからTreeを適応しているテーブルには書き込みしに行っておりません。

445 名前:nobodyさん mailto:sage [2014/05/12(月) 14:13:55.11 ID:???]
debug=2でタイムアウトしたら

Fatal error: Maximum execution time of 30 seconds exceeded in

ってでないっけ?

446 名前:nobodyさん mailto:sage [2014/05/12(月) 14:15:27.41 ID:???]
>>445
Configure::write('debug', 2);

でやりましたが、白画面でした。

447 名前:nobodyさん mailto:sage [2014/05/12(月) 14:27:56.28 ID:???]
Console/commant/VerifyHogeShell.php

classVerifyHogeShell extends AppShell {

 protected function result() {
  $Hoge = ClassRegistry::init('Hoge');
  return $Hoge->verify();
 }

 public function show() {
  debug($this->result());
 }

 public function dump() {
  //!TODO ログに書き込むロジックを記述
 }

}

こんなファイルを作って

$Console/cake VerifyHoge show

とか

$Console/cake VerifyHoge dump

とか

Shell の作り方・使い方はぐぐれば幾らでも出てくる

448 名前:nobodyさん mailto:sage [2014/05/12(月) 14:31:07.10 ID:???]
>>442
cURLからアクセスしても最大実行時間は一緒だ。
コンソールからPHPプロセスを利用しなきゃ。
php のユーザーが誰かってことが抜け落ちてる。

449 名前:447 mailto:sage [2014/05/12(月) 14:32:38.76 ID:???]
1行目ミスった

>Console/commant/VerifyHogeShell.php

Console/Command/VerifyHogeShell.php



450 名前:nobodyさん mailto:sage [2014/05/12(月) 14:37:04.67 ID:???]
>>447
>>448
ありがとうございます!
AppShellなるクラスが用意されていたのですね。知りませんでした。
さっそく試してみます。

451 名前:447 mailto:sage [2014/05/12(月) 14:41:43.59 ID:???]
TeraTerm ってことは Windows か。
わかってるだろうけどコマンドのディレクトリセパレータは / じゃなくて \ な。

452 名前:nobodyさん mailto:sage [2014/05/12(月) 15:16:40.76 ID:???]
>>447
>>448

verify()をShellから実行した結果、180超のエラーが出力されました。
特に多いのは index missingというやつです。
recover() で回復できますでしょうか?

453 名前:nobodyさん mailto:sage [2014/05/12(月) 15:22:02.02 ID:???]
>>452
以前自分も同じようになったときは、
recover()で上手く言った場合とそうでない場合とがあった。

上手く行かなかったときは時間もなかったんで、
独自でスクリプト書いてで lft と rght を振り直した。

すまんが深く探ってないんで、それ以上詳しいことはよく分からん。
一度やってみろとしか言えない。

454 名前:nobodyさん mailto:sage [2014/05/12(月) 15:24:38.22 ID:???]
あと、verify() でエラーが出たってことは
これからも同じ問題が発生するおそれがあるんで、
更新処理を全て点検したほうがいいな。

テストを良く書けているかどうかで、こういうときに大きく差が出る。

455 名前:nobodyさん mailto:sage [2014/05/12(月) 15:27:51.20 ID:???]
Treeビヘイビアを使ってカテゴリ管理って難しいよね。
不特定多数のカテゴリを扱うとかなったら、
今回のような問題が起きてしまう可能性があるし

456 名前:nobodyさん mailto:sage [2014/05/12(月) 15:28:47.24 ID:???]
連投すまんが、今の状態だと recover 走らせる時もめちゃくちゃ時間かかるはずだから、
必ず Shell から実行すること。
更新中にタイムアウトなんかしたら(特にMySQLのMyISAMなどは)やっかいなことになる。

457 名前:nobodyさん mailto:sage [2014/05/12(月) 15:35:37.85 ID:???]
>>455
入れ子集合モデルは更新コストが激高だからな。
場合に応じて使い分けるしか無いと思われ。

458 名前:nobodyさん mailto:sage [2014/05/12(月) 15:38:35.35 ID:???]
>>453-456

アドバイスありがとうございます。
>これからも同じ問題が発生するおそれがあるんで、
お客が不正に行ったデータのInsertなどが原因だった可能性もありますが、
プログラムのほうも確認しておきます。

recover()もShellから実行しました。案外完了が早かったように思います。
今2度目のverify()です。

459 名前:nobodyさん mailto:sage [2014/05/12(月) 16:13:23.60 ID:???]
>>453
verify()でtrueが返りました!
moveUp()をあるノードで実行して結果をdebug文で出すとtrueが返りました。
しかし、treeには何の変化もなし!ノードの位置は一切変わっていません。
なぜなのでしょうか・・・。



460 名前:459 mailto:sage [2014/05/12(月) 16:28:51.15 ID:???]
連投で申し訳ありませんが、moveUp(), moveDonw()の仕様を根本的に勘違いしていました。

bookを読むと 同じ枝の中で順番を上に上げるのがmoveUp()なのですね。

僕はそもそもmoveUp()したノードは「一つ階層を上がって、今までの親ノードと同じ階層に来る」
ということを実現するものなのかと勘違いしておりました。

申し訳ありませんでした。しかしverify, recoverをshellから実行するなどの貴重な情報が得られて
感謝です。

461 名前:nobodyさん mailto:sage [2014/05/12(月) 16:30:16.90 ID:???]
階層を変えるなら parent_id を変更する

462 名前:nobodyさん mailto:sage [2014/05/12(月) 16:31:48.27 ID:???]
>>461
そうですよね。
しかしparent_idを手でいじって、lft, rghtがそのままで良いのかというのが気になる点です。

463 名前:nobodyさん mailto:sage [2014/05/12(月) 16:32:41.62 ID:???]
>>460
ちょっと興味あるんだが、レコード何件あんの?

464 名前:nobodyさん mailto:sage [2014/05/12(月) 16:33:45.39 ID:???]
>>462
>parent_idを手でいじって
ちがーーーう!
TreeBehaviorが効いてるモデルでやるんだよ!!

465 名前:nobodyさん mailto:sage [2014/05/12(月) 16:38:21.01 ID:???]
>>463
3万件超あります。

>>464
もちろん、DBから直接parent_idを変えたりしませんよ。
CakephpのEdit画面(もちろんTreeのモデルのもの)から変えます。

466 名前:nobodyさん mailto:sage [2014/05/12(月) 17:32:11.61 ID:???]
>>463
んん、3万件オーバーでTreeBehaviorか。。。
ブラウザからの更新はちょっとキツイかもな。

467 名前:nobodyさん mailto:sage [2014/05/12(月) 17:34:01.92 ID:???]
>>465
>CakephpのEdit画面(もちろんTreeのモデルのもの)から変えます。

なら問題なく lft, rght 変更してくれる。
っつーか、それがTreeBehaviorの仕事だからな。

468 名前:nobodyさん mailto:sage [2014/05/12(月) 17:45:37.30 ID:???]
改めて思うけど、カテゴリの設計って難しすぎるな

469 名前:nobodyさん mailto:sage [2014/05/12(月) 17:54:12.62 ID:???]
>>466-468

ありがとうございます。
parent_idを変更すると、思っていた階層の移動が完了できました。ご迷惑をおかけしました。

カテゴリはこれからも増えていく可能性があるので、
このままTreeBehaviorを実装していて安全なのかちょっと心配しています。

親子関係を実現するには普通にHABTMでもいいのではないかな、と思いましたが、
設計段階でTreeの採用が決まっていたので、これで作ってしまっています。
データ件数がでかくなった今、非常にデリケートなデータ構造なんだな、と改めて認識しております。



470 名前:nobodyさん mailto:sage [2014/05/12(月) 18:14:56.49 ID:???]
>>468
さらにそれを管理してくのが苦痛。

471 名前:nobodyさん mailto:sage [2014/05/12(月) 18:30:07.53 ID:???]
>>469
親子関係でHABTMってどうやるんだ

472 名前:nobodyさん mailto:sage [2014/05/12(月) 19:01:06.74 ID:???]
>>471
・categories
・articles
・category_articles(中間テーブル)

みたいなテーブルを作る

473 名前:nobodyさん mailto:sage [2014/05/12(月) 19:02:02.02 ID:???]
ごめん。中間テーブルの名前を間違えた。
categories_articlesだったかな。

474 名前:nobodyさん mailto:sage [2014/05/12(月) 19:42:05.93 ID:???]
>>471

Categoryモデルの中に

public $belongsTo = array('Parent' => array('className' => 'Category',));
public $hasMany = array('Children' => array('className' => 'Category'));

と二つ記述するやりかたですかね。
それを最初に思いついたのです。
しかしTreeのほうが上ではないかという意見が出たため、そっちを採用しました。

475 名前:nobodyさん mailto:sage [2014/05/12(月) 19:50:22.00 ID:???]
>>471
だからHABTMじゃないですね。ごめんなさい。
言うならばHas Many and Belongs to Oneでしょうか。

476 名前:nobodyさん mailto:sage [2014/05/13(火) 16:37:41.63 ID:???]
ありゃ、もう2.5.0出たのか。
なんか最近CakePHPのバージョンあがるの早い気がするけど、気のせいか?

477 名前:nobodyさん mailto:sage [2014/05/13(火) 16:39:47.73 ID:???]
>>476
年取っただけだと思う。
時代の流れが早く感じるよな。

478 名前:nobodyさん mailto:sage [2014/05/13(火) 16:44:46.95 ID:???]
2.6も予定されてるのかよ。
さっさと3出して、2は打ち止めでいいだろ。

479 名前:nobodyさん mailto:sage [2014/05/13(火) 17:43:09.45 ID:???]
今のCakeって$usesに書いてあるモデルは実際使われるまで読まれないんだよね?
ということは存在する全モデルを常に書いてもいいってこと?



480 名前:nobodyさん mailto:sage [2014/05/13(火) 18:12:50.09 ID:???]
ぜんぜん良くはねーと思うが、負荷にはならんだろうな

481 名前:nobodyさん mailto:sage [2014/05/13(火) 22:34:11.52 ID:???]
>>479
「今の」ってバージョンいくつからそうなったの?

482 名前:nobodyさん mailto:sage [2014/05/13(火) 22:43:15.01 ID:???]
2.x

483 名前:nobodyさん mailto:sage [2014/05/14(水) 00:35:48.56 ID:???]
サンクス。普段は2系使ってるから特に問題ないな

484 名前:nobodyさん mailto:sage [2014/05/14(水) 02:38:22.28 ID:???]
プログラミングするとき3行毎に動作確認しないと
不安で死ぬやつって俺だけ?

485 名前:nobodyさん mailto:sage [2014/05/14(水) 04:51:26.28 ID:???]
3行は短すぎるが、ちゃんと小さい処理単位でメソッドを分けておけば、
まとめて動作確認してもデバッグしやすいよ。
あとはテストを書け

486 名前:nobodyさん mailto:sage [2014/05/14(水) 07:02:10.89 ID:???]
そんなあなたにテストファースト

487 名前:nobodyさん mailto:sage [2014/05/14(水) 10:05:36.21 ID:???]
ぶっちゃけ、テストの利点が分からないの俺だけ?

488 名前:nobodyさん mailto:sage [2014/05/14(水) 10:09:17.84 ID:???]
さすがに君だけじゃない?

489 名前:nobodyさん mailto:sage [2014/05/14(水) 11:29:01.43 ID:???]
最初のうちは、いまいちわからんかもね。
インターフェースのテストで、mockの使い方がわかってくるようになると、考え方が変わるかも。



490 名前:nobodyさん mailto:sage [2014/05/14(水) 12:33:17.82 ID:???]
>>489
俺も教えて欲しいんだけど
テスト書くのが面倒
テスト自体信用できない
書いてもやっぱり最初から書きたくなる
って思ってしまうんだけどそれでも書いた方がいいと思う?

できるプログラマーの人はみんな書いてるよね。

491 名前:nobodyさん mailto:sage [2014/05/14(水) 12:42:45.04 ID:???]
>>490
結論としては書くべきでFA
そのことがわかるには経験が必要
てことだと思う

492 名前:nobodyさん mailto:sage [2014/05/14(水) 12:51:30.16 ID:???]
サービスが稼動を始めてから、数ヶ月経った後くらいに、
誰かのひどいコードを見つけた時、
テストを書いてあれば・・・と思うよ。

493 名前:nobodyさん mailto:sage [2014/05/14(水) 13:38:02.11 ID:???]
view (.ctp) ファイルのテストってどうやってやるんだろう。

494 名前:nobodyさん mailto:sage [2014/05/14(水) 14:02:28.89 ID:???]
そこまでテストする必要があるのかはよく考えたほうが良いように思えるけど、
やるならSelenium使うんじゃない?

495 名前:nobodyさん mailto:sage [2014/05/14(水) 14:08:25.34 ID:???]
テスト=コードが正しく動作するか確かめる

ではないんだよね?これはブラウザで確認すればいいだけだし、
大体はコード書いた後に実行して確かめているだろ。

具体的にどういう場面でテストが必要になるの?

496 名前:nobodyさん mailto:sage [2014/05/14(水) 17:09:00.17 ID:???]
ユニットテストとユーザテストごっちゃにしている時点でなんだかな。

497 名前:nobodyさん mailto:sage [2014/05/14(水) 17:52:25.48 ID:???]
>>495
> 大体はコード書いた後に実行して確かめているだろ。

一度書き捨てて終わらせられるなら誰も書く訳がない
改修は何度も発生する=確認も同じだけ発生する=クッソ面倒
だから面倒な確認を自動化するためにテストを作るんだ

498 名前:nobodyさん mailto:sage [2014/05/14(水) 20:45:44.91 ID:???]
というよりさ!
まずテストコードってなんなの?
console.log()とは違うの?

499 名前:nobodyさん mailto:sage [2014/05/14(水) 21:02:32.76 ID:???]
お前のテスト(むしろconsoleデバッグ?)
→ 逐一人の手で実行して人間がブラウザやconsoleに表示された値やを見て想定したものかどうか確認する
   自動化できてない
   複数の関数やメソッドが絡むとバグの原因の特定がしづらい

他の皆の意図するテスト(単体テスト)
→ それぞれの関数やメソッドが複数の引数のパターンに対し適切な返り値を返したり
  例外やエラーを吐いたりなど仕様通りの挙動をするかを確かめるコードを書く
  検証する対象が小さいので比較的簡単に書けるし自動化も容易い
  プログラムの小さい単位の動作をあらかじめ保証しておくことで
  後の複数の関数やメソッドが絡むテストの際にもバグの原因の特定がしやすくなる


面倒だから単体テストでググれ



500 名前:nobodyさん mailto:sage [2014/05/14(水) 21:19:27.30 ID:???]
さっぱり意味が分からん






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

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

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