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

私的良スレ書庫

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

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

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
401 : nobodyさん - 2014/05/10(土) 12:53:17.49 ID:???.net (+25,+29,-40)
そうやって批判する奴って何も具体的な事言えない奴ばかりだよな
実際どのくらいのスキルある奴なんだろう
402 : nobodyさん - 2014/05/10(土) 14:23:07.62 ID:???.net (+11,+8,-64)
Composerは確かにほかの言語のと比べて使いにくい印象はあるけど、
git submoduleしないとパッケージのバージョンを管理できないなんて、
なに言ってるかわからないレベルなんだが。
そんなことあるんかね?
403 : nobodyさん - 2014/05/10(土) 15:56:06.47 ID:???.net (+27,+29,-49)
お前らのMVCは間違ってる!ってRails式を散々disるスライドがあったが
ものがちゃんと作れれば別にいいわけで、正しいからどうだってのがよくわからん
404 : nobodyさん - 2014/05/10(土) 17:17:38.04 ID:???.net (-23,-25,-22)
>>401
DBから取ってきたデータがarrayになってる部分だと思われ
Cake3でようやくオブジェクトになるようだが
405 : nobodyさん - 2014/05/10(土) 17:24:14.35 ID:???.net (+33,+29,-22)
それよく聞くけど、オブジェクトの方が便利なん?
書き方が変わるだけのような気がするけど
406 : nobodyさん - 2014/05/10(土) 17:30:12.91 ID:???.net (-26,-29,-84)
Cake3を少し試してみたがEntity使えるだけでも結構変わるね
特にViewがスッキリするのはもちろんだけど今までHelperやControllerに溢れがちだったロジックもEntityクラスに置けるのが結構あるしテストも楽
array+Hash・Setに比べたら開発効率やコードの読みやすさは段違いに上がる


でも2から3への移行は大変そう
407 : nobodyさん - 2014/05/10(土) 17:30:20.29 ID:???.net (+32,+29,-44)
>>405
Modelのメソッドはすべてstaticです、なんて言ったらJavaやRubyなどのオブジェクト指向に
慣れ親しんだ人たちから見れば、なにそのふざけた設計は?とキレられるレベル
410 : nobodyさん - 2014/05/10(土) 23:47:42.75 ID:???.net (+27,+29,-35)
PHP4懐かしいな
修飾子やら例外やらオートローダーが無いとか
参照渡ししないとクローンになるとかいろいろあるが
ActiveRecordの足かせになりそうな制約はないな
411 : nobodyさん - 2014/05/11(日) 13:33:38.34 ID:???.net (-15,-8,-12)
最近、嫌static厨が多くて困る
412 : nobodyさん - 2014/05/11(日) 13:37:57.50 ID:???.net (+27,+29,-17)
static に出来るものはそのほうが良いのにね。
見極めができないんかもな。
413 : nobodyさん - 2014/05/11(日) 15:03:25.90 ID:???.net (+27,+29,-4)
「全部static」はさすがに嫌われて当然
414 : nobodyさん - 2014/05/11(日) 15:07:39.63 ID:???.net (+20,+29,+0)
さすがにそんなヤツはおらんやろ
415 : nobodyさん - 2014/05/11(日) 15:08:05.37 ID:???.net (-18,-29,-31)
staticとかpublicとか分別するとどんなメリットがあるの?もうおっさんだから、今だにわからない。
function hoge を _hogeにする時はあるけど。

どなたかご親切な人
わかりやすく教えてくれませんか?
416 : nobodyさん - 2014/05/11(日) 15:18:12.11 ID:???.net (-24,-29,-9)
>>414
CakeのModelはまさに「全部static」なんだが…
417 : nobodyさん - 2014/05/11(日) 15:37:28.00 ID:???.net (+24,+29,-1)
>>416


どこを言ってるんだろう
419 : nobodyさん - 2014/05/11(日) 18:47:27.75 ID:???.net (+37,+29,-95)
>>399
> つまり結局はタイミングの問題でしかなくて、言語の優劣がどうとか、フレームワークの優劣がどうとか、といった観点は殆ど無く選びました。
つまり結局は、他に行ったから、とりあえず元鞘を叩いておくかっていう3流エンジニアの日常か
420 : nobodyさん - 2014/05/12(月) 01:19:34.02 ID:???.net (+25,+29,-37)
>>415
それマジで質問してるならこんなところにいないで
基本的なオブジェクト指向の勉強したほうが良いよ。
421 : nobodyさん - 2014/05/12(月) 01:30:03.56 ID:???.net (+30,+30,-112)
>>415
static のメリットをひとことで言うと、状態を持たない(状態が変化しない)
振る舞いを提供することにより、インスタンス化した場合に本来であれば考慮するべき
状態変化の副作用から開放されることではないかと。

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

一方、アクセス修飾子のメリットはひとことで言うと
安全な設計が簡単にできるってことではないかと。
その点 CakePHP はメンバー変数の修飾子に public を使いまくってて恐ろしいほどではある。
422 : nobodyさん - 2014/05/12(月) 01:35:05.49 ID:???.net (-23,-29,-207)
俺もstaticって使いどころがいまいちわからん。
特にphpはランタイムが短すぎて、1回しか使わないオブジェクトが多く、
staticを変に意識すると、むしろなんでもstaticでいいんじゃないかと思えてきてしまってこわい。
逆にstaticにしないと困るような事も、あんまないから、よくわからないままで結局staticは使わないという

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

protectedとprivateは、コントローラーやモデルを触ってるくらいなら、
正直使い分けが活きることがほとんどない気がする。
強いて例を出すと、AppController内の処理で切り出したメソッドが、ほかのコントローラーから呼ばれるのが想定外なら、
privateにしておくと呼ばれなくなる。
423 : nobodyさん - 2014/05/12(月) 01:45:18.99 ID:???.net (+29,+29,-65)
>>422
>なんでもstaticでいいんじゃないかと

だけどオブジェクトの状態に依存しないメソッドなんて
そうそう作る機会はないと思うんだが、
もし可能なら作って問題無いと思うんだけど?
というか、むしろ作るべき。
424 : nobodyさん - 2014/05/12(月) 02:01:04.78 ID:???.net (-7,-14,-242)
>>423
もちろん、思えてきてしまうだけで、よく考えるとダメな事がほとんどなんだけどね。
クラスやメソッドを書き始めるときに、まずこれはstaticにできるか?
と考えると、問題ないような気がしてしまうんよ。

そういえば、かなり昔だけどCakePHPを使い始める前のオレオレフレームワークでは、
データベースアクセスするとこ全部staticメソッドにしちゃってたなぁ。
いわゆるCRUDに対応したメソッドがあるだけだったし、データはオブジェクトじゃなくて連想配列だったから、
インスタンスいらないなぁと思って。
あとバリデーターもstaticメソッドだったなぁ。
バリデーションはコントローラーでやってたから、CakePHPでいうバリデーションルールの配列みたいなのは、
コントローラーに書いて、AppController的な親にvalidateメソッドを作ってた。
425 : nobodyさん - 2014/05/12(月) 02:19:15.31 ID:???.net (+20,+22,+0)
このスレにはガチのstaticおじさんが居る気がする
427 : nobodyさん - 2014/05/12(月) 10:30:47.47 ID:???.net (-9,-30,+0)
>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が暗黙的に処理するかってだけの問題な気がする
428 : nobodyさん - 2014/05/12(月) 10:33:48.09 ID:???.net (-28,-30,-129)
>>426
状態依存しないメソッドなら問題ないけど
CakePHP の Model のオブジェクトって状態を持ってるから無理だよ。

たとえば同じPostクラスのオブジェクトが2個あったとして
$Post1->id = 1;
$Post2->id = 2;
ってした場合にメソッドが static なら破綻する。
429 : nobodyさん - 2014/05/12(月) 10:36:05.68 ID:???.net (+16,+26,+1)
>>427
なるほど
430 : nobodyさん - 2014/05/12(月) 10:47:42.76 ID:???.net (+4,+12,-16)
>>428
findと何か関係あるのそれ?
432 : 427 - 2014/05/12(月) 11:59:05.87 ID:???.net (-22,-30,-58)
>>430
例えを簡単にするつもりだったが $id は関係無かったか。
要するに find が参照するプロパティのうち
状態依存のものが沢山あるってこと。

例えば
$Post1->primaryKey = sid;
$Post2->primaryKey = cid;
とか
437 : nobodyさん - 2014/05/12(月) 13:24:21.16 ID:???.net (+30,+29,-149)
>>432

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

まぁ言いたい事はたぶん >>427 と似たようなことなんだろうけど、
ほかのフレームワークをあまり触ってないから、違和感レベルでしか語れない。
439 : nobodyさん - 2014/05/12(月) 13:49:48.47 ID:???.net (+21,+29,-50)
>>438
ありがとうございます。試してみました。

verify()でしばらくかかりましたが、真っ白な画面がリターンされました。
これはツリーに不整合などの異常がなかったということですよね。
440 : nobodyさん - 2014/05/12(月) 14:00:55.26 ID:???.net (-26,-29,-41)
>>439

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

Shell でやってログに書き込んで確認してみたらいいかも。
441 : nobodyさん - 2014/05/12(月) 14:03:28.70 ID:???.net (+32,+29,-18)
タイムアウトで白い画面って・・・もしかして本番環境・・・?
444 : nobodyさん - 2014/05/12(月) 14:11:10.17 ID:???.net (+32,+29,-5)
>>441
いいえ、本番のデータをまるまるコピーしてきましたが、デバッグ環境です。
447 : nobodyさん - 2014/05/12(月) 14:15:27.41 ID:???.net (-16,-30,-53)
>>446
Configure::write('debug', 2);

でやりましたが、白画面でした。
448 : nobodyさん - 2014/05/12(月) 14:27:56.28 ID:???.net (-27,-30,+0)
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 の作り方・使い方はぐぐれば幾らでも出てくる
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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