[表示 : 全て 最新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/

324 名前:nobodyさん mailto:sage [2014/04/27(日) 15:43:07.45 ID:???]
rails多いといっても
phpのほうがrubyよりは一応多いでしょ

rubyの9割以上の求人がrailsってのがすごいよな

railsだとpostgresql求人増えてるし
cakephp+mysqlのスペックだとガラパゴスになりそうだな

325 名前:nobodyさん mailto:sage [2014/04/27(日) 16:13:12.62 ID:???]
せやかて駆動

326 名前:nobodyさん mailto:sage [2014/04/27(日) 17:19:21.88 ID:???]
ん? Cakeスレかここ。 phpの安直さは最高! fuelphp使ってる。 確かにCakeはオワコンだな。

327 名前:nobodyさん mailto:sage [2014/04/27(日) 18:49:35.25 ID:???]
どこまでいっても、所詮Railsのパチもんだしな。
Djangoとはえらい違いだ。

328 名前:nobodyさん mailto:sage [2014/04/27(日) 20:59:13.46 ID:???]
>>326
fuelphpって既に終わってるやん

329 名前:nobodyさん mailto:sage [2014/04/27(日) 21:32:10.25 ID:???]
fuelは結局始まらなかったなぁ

330 名前:nobodyさん mailto:sage [2014/04/27(日) 21:46:02.47 ID:???]
>>324
herokuのおかげかrailsはPostgreSQL対応が盛んだからな

331 名前:nobodyさん [2014/04/27(日) 23:09:38.66 ID:9dL9KMPJ]
少し変化あったけど
結局またMySQLだよな

332 名前:nobodyさん mailto:sage [2014/04/28(月) 00:46:19.25 ID:???]
日本は逆にRailsかCakeのどっちかになってる気がする
ま、CakeもRailsのパクリなんであれだが



333 名前:nobodyさん [2014/04/29(火) 10:06:00.47 ID:uHAmZpKN]
脆弱性の緊急パッチが出てるんで
業務で使っている人は早めに当てておけよー。
1.3.x と 2.4.x 両方。

334 名前:nobodyさん mailto:sage [2014/04/29(火) 10:12:45.43 ID:???]
まじか、と思って見に行ったら
公式からしてやられてしまったのか?w
cakephp.org/
502 Bad Gateway

335 名前:nobodyさん [2014/04/29(火) 10:46:44.84 ID:uHAmZpKN]
公式復旧したっぽいね。
ちなみにこの脆弱性報告したのは実は俺。

336 名前:nobodyさん mailto:sage [2014/04/29(火) 11:06:47.62 ID:???]
前から気付いてたので、フォーム改ざん検知使ってなかった。

337 名前:nobodyさん mailto:sage [2014/04/29(火) 11:19:04.21 ID:???]
英語読めないんだけど、今回は何が問題なの?

338 名前:336 mailto:sage [2014/04/29(火) 11:26:35.82 ID:???]
家出ちゃったんで確認できないんだけど、今回の修正、別アクションにpostするときでも大丈夫?

339 名前:nobodyさん mailto:sage [2014/04/29(火) 11:32:28.27 ID:???]
>>335
クリタタカシさんありがとうございます

340 名前:nobodyさん [2014/04/29(火) 11:35:24.45 ID:uHAmZpKN]
>>337
SecurityComponent のフォーム改竄防止機能に穴があった。
作りにもよるけど hidden で受け取る id とかを改竄されると、任意のレコードを更新可能。

Model::save() を呼ぶ時に第一引数の $data に更新したいデータだけを渡すか
第三引数の $fieldList を明示的に指定するかしてれば平気。

>>338
別のアクションでも平気。
FormHelper が作る action をセキュリティトークンに入れてるから。
ただ、JavaScript で動的に action を変更している場合はブラックホールに飲まれるかと。

341 名前:nobodyさん [2014/04/29(火) 11:38:39.55 ID:uHAmZpKN]
>>339
どういたしまして

342 名前:nobodyさん mailto:sage [2014/04/29(火) 11:44:15.83 ID:???]
CakeのSecurityComponentっていっぱい穴ありそう
俺が触ってたのは1.3の頃だけど使いたくないと思った



343 名前:nobodyさん mailto:sage [2014/04/29(火) 11:46:59.01 ID:???]
すげえ

344 名前:336 mailto:sage [2014/04/29(火) 11:48:47.49 ID:???]
>>340
ありがとう。これで自作form改竄対策から離れられる。

345 名前:nobodyさん mailto:sage [2014/04/29(火) 16:06:25.97 ID:???]
セキュリティトークンどころかformまで今まで自作してたけど
Cake純正のもの使った方が楽なんかな

346 名前:nobodyさん mailto:sage [2014/04/29(火) 17:12:05.84 ID:???]
おまえなんでCakePHP使ってんの?

347 名前:nobodyさん mailto:sage [2014/04/29(火) 19:09:18.76 ID:???]
昔はもうちょっと使ってる人多かったんだよ
それでメジャーなのかなぁと思って、手を出した
結構色々これで作っちゃったから、以後ずるずる

348 名前:nobodyさん mailto:sage [2014/04/29(火) 20:08:51.90 ID:???]
確実に昔よりは使っている人が多いと思うよ

349 名前:nobodyさん mailto:sage [2014/04/29(火) 22:33:23.36 ID:???]
少なくとも俺の観測範囲では減っているな

350 名前:nobodyさん mailto:sage [2014/04/30(水) 08:44:08.14 ID:???]
ワンオフ型が減り、量産型が増えたから
環境によっては増えたと思い、環境によっては減ったと思う

351 名前:nobodyさん mailto:sage [2014/04/30(水) 13:45:58.87 ID:???]
また、アップデートかw

352 名前:nobodyさん mailto:sage [2014/04/30(水) 15:08:14.56 ID:???]
う、本当だ



353 名前:nobodyさん mailto:sage [2014/05/01(木) 00:53:29.70 ID:???]
なんでもかんでもhappy to announce ってバカみたいだな

354 名前:nobodyさん mailto:sage [2014/05/01(木) 02:19:18.51 ID:???]
まぁ、決まり文句だからしゃーないけど、
文言考えるの面倒くさいんだろうな

355 名前:nobodyさん mailto:sage [2014/05/02(金) 00:08:32.26 ID:???]
>> 340

これ本当?diffをちょっとみただけだけど、post先のURLを改竄されても通ってたのが、通らなくなってよりセキュアだねってだけで、hiddenの改ざん検知とか関係なくない?

356 名前:nobodyさん mailto:sage [2014/05/02(金) 00:25:59.26 ID:???]
嘘だったらこめん。明日よくみてみる。

357 名前:340 mailto:sage [2014/05/02(金) 00:35:18.90 ID:???]
>>355
本当だよ。
俺が Mark Story 氏に実際の攻撃手順を書いて送ったのが26日。
アップデートが 2.5.0-RC2 に脆弱性のアナウンスなしで反映されたのが27日。
1.3.18 と 2.4.8 にアナウンスありで反映されたのが29日。
かなり深刻な脆弱性だったからこういう日程になったんだけど、
結果的にはミスがあって 2.4.9 が出ることになった。

必ず攻撃が成功するかはサイトの作り次第だけれど、
仕事で使ってるならアップデートした方がいいよ。

358 名前:nobodyさん mailto:sage [2014/05/02(金) 00:43:14.81 ID:???]
>>356
今回の問題は、field改ざん検知のハッシュ値が、別のurlでも使えてしまう問題。

例えばForm->textでfield1,filed2を生成しPOSTされた値を保存するaction1、
Form->textでfield1のみ生成しPOSTされた値を保存するaction2があるとする。

action2でform改ざんを行って手動でfield2を追加しPOSTする場合を考える。

一緒にPOSTされるhash値の不一致でエラーとなるのが本来の仕様。
ただし以前のバージョンだと、form改ざんと併せてhash値をaction1のものを引用すると、
エラーにならずにfiled2を上書きできてしまう。

今回の修正で他のアクションのhash値を引用することができなくなり、本来の仕様を
回避する穴がふさがった。

ちなみにhiddenの改ざんの話は、どういう意図で言ったのか俺もよく関連はわからん。

359 名前:nobodyさん mailto:sage [2014/05/02(金) 00:55:27.39 ID:???]
>>355だけど、すまん。意味分かったかも。リリースノート読飛ばしてコミットログしかみてなかった。actionを改ざんすることでSecurtyComponentが丸ごと迂回されるのでhiddenも改ざんできるのね。いや、ソースみてないんでこれも嘘かもしれないけどw

360 名前:340 mailto:sage [2014/05/02(金) 00:58:57.58 ID:???]
>>359
そういうこと。

361 名前:nobodyさん mailto:sage [2014/05/02(金) 15:48:57.61 ID:???]
パンくずリストを作成するHTMLヘルパーって扱いが難しいよね
階層が増えるとビューに余計なコードを書く機会が増える
だからコントローラと独自ヘルパーで何とかしているけど、
手間がかかって仕方がない。

362 名前:nobodyさん mailto:sage [2014/05/02(金) 18:24:19.36 ID:???]
cookbookの例にあるようにTreeビヘイビアを使ってLI リストを表示したいのですが、
ビューで表示するときはヘルパーか何か作らないといけないのでしょうか?
以下のようにしたいのですが、generateTreeListでは無理です。

・My Categories
 ・Fun
  ・Sport
   ・Surfing



363 名前:nobodyさん mailto:sage [2014/05/02(金) 19:10:49.13 ID:???]
>>362
Treeビヘイビアは不要

Model::find('threaded');
か、
Model::find('all');
したでーたを Hash::nest() で入れ子にする。

364 名前:nobodyさん mailto:sage [2014/05/02(金) 20:12:03.57 ID:???]
>>363
すみません、そういう事ではなくて、ビューでの表示です。
ビューで>>362みたいなリスト化して出力するには、
独自のヘルパーを作らなければいけないのか?
他に方法があれば教えてくださいっと言った質問になります。

365 名前:nobodyさん mailto:sage [2014/05/02(金) 20:40:21.50 ID:???]
無いよ。

なんでかって言うと、再帰処理したら簡単に表現できるからなぁ。

で、再帰処理するためには入れ子構造に組み直す必要があって、
そのためには >>363 に書いた通りって意味なんだが?

366 名前:nobodyさん mailto:sage [2014/05/02(金) 20:42:16.77 ID:???]
とりあえず $Hoge->find('threaded'); で取得したデータをダンプするなりして
よく考えてみ。

367 名前:nobodyさん mailto:sage [2014/05/02(金) 21:05:59.69 ID:???]
HtmlHelper::nestedList() ではだめなの?

368 名前:367 mailto:sage [2014/05/02(金) 21:46:37.32 ID:???]
ごめん。
HtmlHelper::nestedList() に渡すには TreeBehavior だと自力で整形しないと駄目なんだね。
CakeDC の Utils プラグインにある TreeHelper::generate() なら >>362 の要求を満たせる。

369 名前:nobodyさん mailto:sage [2014/05/02(金) 21:48:33.85 ID:???]
>>367
HtmlHelper::nestedList() に渡すには
単純な入れ子構造にしておかないとだめ。

Model::find('threaded'); で取得したのはそのまま使えないと思う。

いったん Model::find('all'); で取得したデータを
Hash::extract() で階層を浅くして、それを
Hash::nest(); を使って組み直すなどの手間を掛けないと使えないんじゃないかな。

370 名前:nobodyさん mailto:sage [2014/05/02(金) 21:49:26.87 ID:???]
あ、かぶった。すまん。

TreeHelper なんてあるの知らなかった。
一度見てみるわ。

371 名前:nobodyさん mailto:sage [2014/05/02(金) 22:02:34.68 ID:???]
いえいえ。
実は俺もわりと最近知った。

372 名前:362 mailto:sage [2014/05/02(金) 22:29:38.32 ID:???]
>>365-371
皆さんありがとうございます。素直に自作ヘルパー作って
配列を再帰して表示することにします。



373 名前:nobodyさん mailto:sage [2014/05/08(木) 16:22:29.68 ID:???]
フィールド名がemail以外の時ってemailバリデーション効かなくない?
サンプルコード漁ったらさらっと書いてあるけど動かない…

374 名前:nobodyさん mailto:sage [2014/05/08(木) 17:05:11.16 ID:???]
>>373
$validateの配列の書き方間違ってない?

375 名前:373 mailto:sage [2014/05/08(木) 17:40:55.81 ID:???]
すまんちゃんと効いてた。これsave時にfalse返すんだな。
他のバリデーションと同様にPOST前にポップアップで教えてくれるかと思ってた。

376 名前:nobodyさん mailto:sage [2014/05/08(木) 21:14:06.37 ID:???]
え?そんな機能あったか?

377 名前:373 mailto:sage [2014/05/08(木) 22:24:36.95 ID:???]
POST前ポップアップってこれのことね。
cdn-ak.f.st-hatena.com/images/fotolife/c/cakephper/20130211/20130211223324.png
もしかして俺何か勘違いしてるかな…

378 名前:nobodyさん mailto:sage [2014/05/08(木) 22:33:24.56 ID:???]
ブラウザさん

379 名前:nobodyさん mailto:sage [2014/05/09(金) 00:28:49.07 ID:???]
ブラウザが出してるやつかな

380 名前:nobodyさん mailto:sage [2014/05/09(金) 00:37:04.59 ID:???]
>>378-379
マジかwwChromeww本当にありがとうw

381 名前:nobodyさん mailto:sage [2014/05/09(金) 04:21:32.04 ID:???]
HTML5の話題でひとくくりにされてる最近のブラウザの機能やね。
CakePHPもFormHelperがそのための属性を出すようになったりはしてるけど。

382 名前:nobodyさん mailto:sage [2014/05/09(金) 10:16:45.79 ID:???]
クライアントバリデーションに任せっきりになってしまって、
悲惨なサイトが続出するような悪寒。

楽だし負荷軽減できるしで、いいことずくめなんだけど。



383 名前:nobodyさん mailto:sage [2014/05/09(金) 10:59:15.63 ID:???]
そうだね。悪い奴がいないと助かるんだけどね。

384 名前:nobodyさん mailto:sage [2014/05/09(金) 11:01:33.24 ID:???]
Controllerでバリデーションしなくて
Modelに移動するいい傾向になるだけでないかな?

385 名前:nobodyさん mailto:sage [2014/05/09(金) 13:43:36.22 ID:???]
いい傾向ってなんだ?

386 名前:nobodyさん mailto:sage [2014/05/09(金) 13:51:32.25 ID:???]
Fat Modelのことかと思われ

387 名前:nobodyさん mailto:sage [2014/05/09(金) 14:56:57.61 ID:???]
サーバーサイドのバリデーションをしなくていいわけじゃないから、負荷軽減にならなくね?
ちゃんと機能するようにつくれば、無通信でユーザーに間違い見せれて、
使いやすくいフォームにはなると思うけど。

388 名前:nobodyさん mailto:sage [2014/05/09(金) 15:49:02.85 ID:???]
ブラウザで弾いておいたらサーバー側での試行回数は減るだろ。
正常系の負荷はもちろん変わらんけど。

389 名前:nobodyさん mailto:sage [2014/05/09(金) 18:26:07.60 ID:???]
初心者なんすけど
モデルの使い道がよくわかんないっす。
何から何までコントローラーで処理しちゃってモデルはスッカラカンです。
どなたかモデルの使い道というか便利さを三行で説明しなさい。

390 名前:nobodyさん mailto:sage [2014/05/09(金) 18:27:49.70 ID:???]
>>387
HTTPの勉強をもっとしましょう。

391 名前:nobodyさん mailto:sage [2014/05/09(金) 18:46:15.86 ID:???]
>>389
俺も初心者だからよく分かってないが、
コントローラはモデルに作ったメソッドを呼ぶだけで、
ざっくりした条件分岐のみにとどめておくと後から非常に見やすい気がする。

392 名前:nobodyさん mailto:sage [2014/05/09(金) 20:58:13.09 ID:???]
やりすぎると Very Fat Model になってそれはそれで見難い
バランスというかセンスが問われる部分



393 名前:nobodyさん mailto:sage [2014/05/09(金) 21:01:03.07 ID:???]
>>389
単に好みの問題だから好きにすればいいんじゃないかな
モデルはどこからでも使える上にシングルトンっぽくインスタンスが1つだけなので
共通っぽいメソッドやクラスを実装するのにも使える

394 名前:nobodyさん mailto:sage [2014/05/09(金) 21:32:58.38 ID:???]
ああそうか、モデルはなんとなくテーブルに紐付くものみたいに思ってたが
ロジック処理だけのモデルがあっても良いよな

395 名前:nobodyさん mailto:sage [2014/05/10(土) 01:47:38.21 ID:???]
>モデルはなんとなくテーブルに紐付く

これは常にRORと、その派生のCakePHPに対する批判として挙げられてるね。
本来のModelとは全然違うって、激怒しているブログがあちこちにある。

なお、CakePHP3では大幅に改善されるみたいです。

396 名前:nobodyさん mailto:sage [2014/05/10(土) 07:20:47.11 ID:???]
>>388
ああ、まぁそりゃそうか。
といっても、負荷対策が必要な状況では、効果的な対策になるほどは減らないとは思うけど。

397 名前:nobodyさん mailto:sage [2014/05/10(土) 10:46:10.10 ID:???]
Cakeはエンティティを入れるのが遅すぎた

398 名前:nobodyさん mailto:sage [2014/05/10(土) 10:53:41.99 ID:???]
tech.itandi.co.jp/2014/04/cakephp%E3%81%8B%E3%82%89rubyonrails%E3%81%AB%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%81%9F%E4%B8%89%E3%81%A4%E3%81%AE%E7%90%86%E7%94%B1/

1,3は同意できるところだが
2は会社のエンジニアレベルが低いとでも言いたいのか

399 名前:nobodyさん mailto:sage [2014/05/10(土) 11:01:56.24 ID:???]
周りがCakePHPはRailsのパクリだっつーから使ってみたら
ActiveRecordの超絶劣化っぷりにびびった

Railsも似非MVC2になりがちだけどCakeはそれ以前に
オブジェクト指向設計に真っ向から喧嘩売ってるレベル

400 名前:nobodyさん mailto:sage [2014/05/10(土) 12:53:17.49 ID:???]
そうやって批判する奴って何も具体的な事言えない奴ばかりだよな
実際どのくらいのスキルある奴なんだろう

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おじさんが居る気がする






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

前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