【PHP】フレームワーク CakePHP 16ホール目【v2.4】at PHP
【PHP】フレームワーク CakePHP 16ホール目【v2.4】 - 暇つぶし2ch819:nobodyさん
14/01/23 23:16:39.26
>>817
parent::__construct();が抜けてんじゃねーの?

820:nobodyさん
14/01/24 00:03:19.65
コントローラのコンストラクタなんて触ったこと無いな。
変わったことやってんのか?

821:nobodyさん
14/01/24 01:25:22.59
>>818
1.3なんてもう覚えてないけど、認証はAuthコンポーネントじゃないの?
CakePHP2ではAuthだぞ。
SecurityコンポーネントはCSRF対策とか、そういうの用だと思うが。

822:nobodyさん
14/01/24 08:54:07.70 OhuU+SsS
cakePHPの入門書でオススメあったら教えてくだしあ><

823:nobodyさん
14/01/24 09:17:20.30
>>821
ありがとう。CakeでウェブAPIをつくっているので、Authコンポーネントではなく、
Securityのベーシック認証にしたいのです。

824:746
14/01/25 00:27:35.89 fnA/g+QM
コントローラをFacadeパターンにして実務処理は自作のちっさいコントローラクラスにやらせれば良いの?
クラス設計するなら

825:nobodyさん
14/01/25 00:34:45.21
Model だろ普通

826:nobodyさん
14/01/25 00:38:00.50
CakeがMVC2の勘違いをkskする

827:nobodyさん
14/01/25 00:42:48.60
>>822
これ、というのは無いなぁ
ただ、「CakePHP事典」と「レシピ119」だっけ?
あれはひと通り目を通すといいと思う。
CakePHPの機能を結構カバーできてる。
ただ、レシピの方は今ひとつ癖があるなぁって思った。
まぁ、ひとつの参考としては良いと思うよ。

網羅性に欠けるけど「実践」もいい。

まぁ、この3冊に全部目を通して損はないと思うよ。

828:746
14/01/25 00:46:35.74 fnA/g+QM
あ、モデルだよなw
CakeでモデルつーとDBのテーブルを連想してしまってた

829:822
14/01/25 05:12:01.03
>>827

あざっす m(_ _)m

830:746
14/01/25 13:37:17.68 fnA/g+QM
いきなりbakeを使わせる本を入門書には向かないと思うが>>実践

831:nobodyさん
14/01/25 13:56:53.37
知らない

832:nobodyさん
14/01/25 14:52:32.45
>>828
CakePHPのモデルはDBとくっつきすぎていて、
そこにロジックを入れるのはちょっと違う感じもするようになった。

833:nobodyさん
14/01/25 14:55:02.37
CakePHP辞典も入門としては使えないと思った。
いやいい本だし、入門時でも慣れてきても、
ソースコードを見るかCakePHP辞典を見るかって時はあるから、
持っといて損はないと思うけど。
あれで入門しようというのは難しいとおも。

834:nobodyさん
14/01/25 15:06:07.31
だから、コレというのはないと言ったんだ。
1系の時みたいな手取り足取りのチュートリアル本は無いからな。

もし本当に初心者で一からCakePHPをやりたいっていうんなら
ブログチュートリアルを暗記できる程度まで繰り返し覚えろとしか言えない。

ただ、実践本が初心者向けでないことは確かだった。あれは奨めない。

835:nobodyさん
14/01/25 15:07:52.67
ActiveRecord=モデルみたいな誤解を広めたRailsが全ての元凶
Cakeは犠牲になったのだ

836:827, 834
14/01/25 16:41:20.78
「はじめてのCakePHP (I・O BOOKS)」っていう本があるみたい。
読んでないんでなんとも言えないけど、
Amazonの書評とサンプルコードダウンロードしてみた感じ、
入門書として、ひょっとしたら良いかもしれない。
コードの一部が古いので注意する必要ありだろうけど。

(パッと見て、コントローラのプロパティ宣言キーワードに public を使わずに var を使ってるのはヤバイわ)

837:827, 834
14/01/25 17:56:10.31
そういえばCakePHP辞典って正誤表を公開するって
随分前に著者がツイッターで言ってたんだけど
音沙汰なしだな。。。

838:nobodyさん
14/01/25 18:59:02.53
>>837
まさぴーだな。
あの人のソースが一番わかりやすいし綺麗。
本もわかりやすい。
俺はお勧め。

839:nobodyさん
14/01/25 22:40:50.09
CakePHP2でvarを使ってるってだけで敬遠したい。

840:746
14/01/26 00:18:39.58 2eFTwFkL
メンバ変数、みたいなのは$componentsに入れなきゃダメなのか?
コントローラで $this->hogehoge みたいな使い方したい場合

841:746
14/01/26 00:27:11.25 2eFTwFkL
多少、誤植とかあるけど
WebデザイナーのためのCakePHPビューコーディング入門
URLリンク(www.amazon.co.jp)
はプログラマ向け入門書としてもそこそこよかったと思った。前半しか読んでねーが

842:nobodyさん
14/01/26 00:45:57.89
>>839
俺もvarだけどなんかダメなん?

843:nobodyさん
14/01/26 02:18:11.54
>>842
PHP5になって何年たったと思ってるんだ。

844:nobodyさん
14/01/26 02:19:40.46
>>798
俺モデルにstaticで関数作って使うクラスだけapp::usesして使ってるけど(bootstrapまわりのグローバル層には置かない)
これって少数派なのかね

845:nobodyさん
14/01/26 02:20:44.56
>>746
あなたの書き込み最初から読ませてもらったけど、
フレームワークって、あなたの思ってる「プログラミング」にくらべると
すごく不自由なもんだと自覚した方が吉。

何しろ他人が「型」を作って、それに自分を嵌めこむ作業だから。

特にCakePHPはCodeIgniterやYiiなんかと比べるとその傾向は強いと言われる。

まずは開発者の意図を極力咀嚼して定形と言われる方法で開発するところから始められないなら、
フレームワークなんて使う意味ないよ。

846:nobodyさん
14/01/26 02:25:24.29
array()はまだいいけど、varはさすがにちょっと…。

847:nobodyさん
14/01/26 02:25:56.65
>>840
PHP初心者なのか。
メンバ変数って単語を知っててなぜそうなるのか疑問だが、

class Foo{
public $foo = 1;
public function bar(){
return $this->foo;
}
}



848:nobodyさん
14/01/26 02:26:09.48
>>844
全然いいんじゃない?
static ならテスト書きやすいし
ただ、Modelに入れずにLibに入れるかってのはある。
Modelにしちゃうと色々副作用とか考慮する必要もあるし。

849:nobodyさん
14/01/26 02:32:12.27
>>848
とっ散らかるのイヤだなーとモデルごとに置いてて、今まで特に問題は起きてないけど
Lib層の使いこなしは考えていきたいね
ロジックはMVCで分けても、定義まわりは汎用的に使いまわしたいこと多いしな

850:nobodyさん
14/01/26 02:51:45.24
マジか!もうvar使わないのか。
時代が流れるの早いなー!

851:nobodyさん
14/01/26 03:30:04.12
>>847
いや、>>840 が言ってるのは Component のオブジェクトプロパティを
直接指定できないかってことでしょ。
で、フレームワークが $components の内容を参照して勝手にセットする
しか方法がないのかってことにイラついてるんだろ。

852:nobodyさん
14/01/26 04:22:27.54
>>851
ああそういうことか。
じゃぁ

$this->Foo = $this->Components->load('Foo');

853:nobodyさん
14/01/26 04:25:33.67
>>850
おいおい、俺がこの業界にまだ入りかけで、アルバイトでPHP書いてたときですら、
アクセス修飾子書いてたぞ。
もう5年以上は前の話だ。

854:nobodyさん
14/01/26 04:51:42.85
>>853
PHP歴、俺は10年以上だな。おっさんだ。。。
プログラムだけは経験多くても新しいのについてけないとダメだな。

var でも privateでもpublicでも何も変わらん気がするんだけどどうなん?
で、varが3文字で無難だからという理由で使ってるんだけど。
教えてください。

855:nobodyさん
14/01/26 05:06:46.50
>>854
テスト書いてる?

変えちゃいけないインターフェース(public){=テストする}と
変えてもいい内部でだけで使うメソッド(private){=テストはpublicメソッド経由で行う}を
varでどうやって区別するんだい?

どっちでもちゃんと動くからいいというものではなく、
重要なのは、コードに"意図"を記述できるかどうかだよ。

856:nobodyさん
14/01/26 05:09:49.74
>>855
すげー!
そんな違いがあるのか。
勉強になりました。
テストは書いてないです。
ありがとう。

857:nobodyさん
14/01/26 05:21:51.60
>>854
アルバイトが長かっただけで俺もそれなりにおっさんだけど。
varで書かれたコードは見た目が気に食わない。

というのも、varは互換性のためpublicと同じになるから、
private, protectedが使えないわけだけど、
JavaScriptみたくアクセス修飾子がないけどうまくやってる言語もあったりするから。

とはいえ、途中参加のPHPプロジェクトに入ったりしたら、既存のコードを読むときに、
publicなのかそうじゃないかは、コードを読むときに手がかりにするし、
というかpublicメソッドだけ追ったほうが概要がつかみやすいと思う。

まぁ、1人で作ってたり少人数チームだったりすると、アクセス修飾子なんてなくても、
なんとなくわかったりするし、privateには _ つけるといった運用カバー的方法もあったりするし、
どうしても徹底しないととは、正直言いづらい。
だから、見た目が気に食わない。

858:nobodyさん
14/01/26 09:20:27.99
>>854
varもpublicも変わらんというならまだしも、
privateとpublicが何も変わらんと思ってるってことは、手続き型しかやってなさそう。
テストの無い数千行の神クラス・・・。

859:746
14/01/26 10:00:51.56 2eFTwFkL
>>847
> >>840
> PHP初心者なのか。

PHPもCakeも3ヶ月くらいしか経験はない
練習で掲示板を作ったくらいだ

>
> class Foo{
> public $foo = 1;
> public function bar(){
> return $this->foo;
> }
> }

できるんだな。サンクス
今作らされてる仕事でコントローラーばかりにコードを書くとクラスが肥大してヤだから
URLから呼ばれるコントロールをFacadeにして個別機能を小さくクラスわけて new したいな、
と思ってる所なんだ

860:nobodyさん
14/01/26 10:25:55.73
>>859
じゃぁ

コントローラをFacadeにするのは正解。
ビジネスロジックを別クラスにするのも正解。
一般的に、ビジネスロジックはModelに書くのが良いとされている。
一つのModelばかりになんでも詰め込んで肥大化させるのはあまり良くない。
複数のモデルで共通する振る舞いはBehaviorを作るのが正解。
Modelとテーブルの関係を外して新たなModelを書くのはOK。
Libに新しいクラス作ってもいいよ。

ってところ。

861:746
14/01/26 10:42:05.01 2eFTwFkL
>860
ありがとう。少し光が見えてきた

862:nobodyさん
14/01/26 12:35:40.50
作るものにもよるかもしれんけど、コントローラーやモデルに、
そんな沢山書かないとな場合て、そんなにないよな。

もしそうなら、コントローラーも、新たに作ったコントローラーもモデルも、
数行しか書いてないみたいには、しないほうがいいと思うよ。

find2回して、片方をforeachでまわしてちょっと加工して、
あとは表示なんてのは、そのページでしか使わないんだったら、
もうコントローラーに書いておけばいいと思ってる。

863:nobodyさん
14/01/26 12:57:42.83
>>862
それだと、テストが難しくなる。

864:nobodyさん
14/01/26 13:08:34.52
>>863
すべてをテストする必要はないんじゃね。
find2 foreach1だけなら、ほぼ間違えないし、
テスト可能にする事も含めて、テストのコストのほうが高いと思う。
foreachの中身が1行2行という想定だけど、
もしこれが複雑なものなら、foreachのとこだけ切り出してテストできるようにはしてもいいと思うけど。

865:nobodyさん
14/01/26 15:09:54.48
>>860
Cakeって案外不親切だよな
自由度が高いといえば聞こえはいいが

866:nobodyさん
14/01/26 17:52:52.45
CakePHPは自由度高くないでしょ

867:nobodyさん
14/01/27 08:26:21.27
2014年にもなって「varって何が悪いの?」レベルのことを言う経験10年って・・
不勉強とかそういうレベルじゃねーだろ

868:nobodyさん
14/01/27 09:15:59.49
化石だな

869:nobodyさん
14/01/27 10:27:59.61
(俺も正確に理解せずに使ってた、なんて言えない・・・)

870:nobodyさん
14/01/27 13:43:50.37
var使ってますってのは
私はいまだにOOも理解してない手続き型しか書けない老害です
って宣言と同義

871:nobodyさん
14/01/27 17:32:39.84
アクセス権はOOに必須ではないがな

872:nobodyさん
14/01/28 09:32:01.09
カプセル化はOOのキモだと思う

873:nobodyさん
14/01/28 11:26:46.25
そりゃそうだ

874:nobodyさん
14/01/28 12:09:08.34
全部publicにstaticに…ってただのファイル分割だわ
そういやそんなおじさんがいたな…

875:nobodyさん
14/01/28 12:36:13.58
varおじさん

876:746
14/01/29 08:28:57.79 4MhCoapX
アクション名と違うファイル名のctpを使うにはどうしたらいいの?
アクション名がかぶりそうなんだよ

877:nobodyさん
14/01/29 08:47:04.63
Viewフォルダ内をコントローラごとにフォルダ分け
同一コントローラで名前がかぶりそうなら設計があやしい

878:nobodyさん
14/01/29 17:13:25.95
>>876
コントローラの中で

$this->render('任意の名前');

879:nobodyさん
14/01/29 22:52:44.55
かっこいいbake用skeletonどこにありますかね…
なかなか見つかりません

880:746
14/01/29 23:39:01.19 4MhCoapX
>>878
サンクス。調べてたら$layerの使い方もなんとなくわかった気がしてきた

881:nobodyさん
14/01/30 02:58:52.18
Amazonみたいにさ、
この商品を見た人は、以下の商品も見ています。

ってのを作りたい場合、どのように作ればいいか教えてもらえませんか?

882:nobodyさん
14/01/30 03:35:25.70
閲覧ページのURL、ページ遷移、滞在時間とかを取得して、
統計データから商品Aから商品Bへのスコアを計算して、
閾値を設定して、それを超えたものをスコア順に並べる

みたいな感じじゃないの?

883:nobodyさん
14/01/30 03:39:02.25
FacebookとかAmazonレベルだと複雑なスコア算出の式をしてるだろうが、
とりあえず何らかの指標で弾き出したスコアを元にリストアップってのはどこも同じはず。

884:nobodyさん
14/01/30 07:39:44.50
オライリーから、集合知プログラミングって本が出てたはず
わりとそのものズバリな内容が書いてあった
中のコードはphpじゃないけどpythonだから読みやすいし

885:nobodyさん
14/01/30 09:24:11.61
奥が深い分野だから、Amazonと同じ精度出すだけでも、
難易度相当高いよ。

886:nobodyさん
14/01/30 09:35:06.95
同じ精度出す必要無いよ。過剰実装だ。
単純に文字通り受け取って、リファラから商品IDを集計すれば良いだけだろ。

887:nobodyさん
14/01/30 10:50:07.49
>>884
881じゃないけど横からサンキュー

888:746
14/01/31 01:19:24.89 nps2dTDl
アクションとURLの関連性を任意にしたい場合、config/route.phpのRoute::connectで指定してやればいいの?

889:nobodyさん
14/01/31 09:22:20.73
>>888
おっけーです

890:nobodyさん
14/01/31 13:18:43.14
CakePHPがあまり関係ない+そんな基礎的なことをと言われそうだけど、
よく見てるスレってここくらいだし、一応CakePHP使って作るし、質問させてくれ。

入力、確認、完了というよくあるフローの投稿機能なんだけど、
入力の段階でテキストやプルダウンなどのほかに、画像アップロードがあるんだ。
確認ページでは画像アップロードは完了させて、確認できるように表示する。
完了すれば、画像は所定のディレクトリに保持されて、ファイルパスが他のテキストとあわせてDBに入る。
確認の段階で戻ったり、完了に到達しなかったら、テキストも画像も保持しない。

良くある話だとは思うけど、確認ページ+画像アップロードが、なんか久しぶりで、
さらにcronが使えないサーバーで動かす予定なんだ。
前やったときは、daily cronで完了に至らなかったケースの画像を削除してたんだけど、
その方法が使えないから、どうしたものかと悩んじゃって。

この画像の後始末って、普通どうやってやるもんなのかな?

891:nobodyさん
14/01/31 21:38:59.99
>>890
俺ならcron使えるサーバー使う。

892:nobodyさん
14/01/31 21:40:33.68
>>890
というか、いちいち俺は削除しないな。
下手に削除プログラム走らせるとバグの原因になる。
ゴミデータあっても誰も見ないし。

893:nobodyさん
14/01/31 22:07:45.62
トリガなんてなんでもええやろ
ユーザリクエストでもいいし外部Cronでもいいし脳ミソ0か

894:nobodyさん
14/02/01 01:04:49.93
乱数でハズレ引いたユーザーに負担してもらう

895:nobodyさん
14/02/01 11:45:31.12
>>890
俺は正式アップロード用のフォルダとそうでないのと分けてるよ。
後から手動で消しても大差ないし、SSHからなら一瞬だしな。

896:nobodyさん
14/02/01 12:00:34.17
今まさに正式アップロードになろうとしてるやつを手動で消さないように注意ね

897:nobodyさん
14/02/01 14:32:58.78
それは日付指定して削除すればいいだけだよね

898:nobodyさん
14/02/01 14:57:34.78
解決
しゅーーりょーー!


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch