【PHP】フレームワーク CakePHP 2ホール目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/11/14(水) 02:50:28ID:???http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0662nobodyさん
2008/02/29(金) 14:59:47ID:???0663nobodyさん
2008/02/29(金) 20:34:53ID:???0664nobodyさん
2008/02/29(金) 23:39:58ID:???core.phpに書いてるんだけど、これで問題ないですか?
0665nobodyさん
2008/03/01(土) 00:37:40ID:???app/core.phpはcakeの動作を変えるために設定を変えるだけで
自分で値を追加しないものと感じる。
もっとも「すべてのページで使うような変数」の内容によっては、
AppControllerにかいたりvendors以下にファイル作ってそこに書いたりする。
とここで、ふと、自分の作っているのを見たらapp/core.phpにも書いていたwww
といっても、ユニットテストのための追加設定だけどね。
0666nobodyさん
2008/03/01(土) 12:28:11ID:uin8SgpQデータベースの値として、0が入ってしまうんですが、
これをNULLで代入させる方法ありませんか?
もちろんデーターベースのフィールドはNULL値が入るようになっています。
データベースはMySQL。クエリーとしては、
INSERTとかUPDATE 〜〜〜 number_field = '' という文が発行されています。
たしかデータベースによっては(Oracle?)、こういう場合null値を入れるやつも
あった気がしますが、汎用的な方法としてやりたいな。
0667nobodyさん
2008/03/01(土) 14:35:44ID:???0668nobodyさん
2008/03/01(土) 14:43:32ID:???使ったこと無いので勉強したほうがいいのかなと思いまして。
先輩方、ご指導ください。
0669nobodyさん
2008/03/01(土) 15:07:46ID:uin8SgpQそれがですね。nullを入れてもだめなんですよ。
同じところで4989を代入したら強制的に値を4989に出来たので
間違いないと思うんですが。
0670nobodyさん
2008/03/01(土) 15:20:41ID:???0671nobodyさん
2008/03/01(土) 15:21:09ID:???使っていると今までの手動テストがいかに怠けていたかがわかるよ。
今ユニットテストでやっているテストを手動でやれといわれたら泣く。
設計が固まってなくて大幅に変更するときとか、安心していじれるようになる。
ある操作をしてエラー → プログラム修正 → データ消してテストデータ入れる → もう一回同じ操作。
これを手動で何度もやらなくてすむ。操作が複雑になって、前提データが
複雑になると、もう一回同じ状態に戻して操作なんてやってられない。
あとちょっと変則的だけど、データベースの定義&その他の設定をYAMLを
使ってやっているのだが、そのスキーマのチェックにも使っている。
スペルミスとか細かいエラーに悩まされなくていいよ。
本当は、YAMLスキーマバリエータを使うべきなんだろうけど。
PHP用なさそうだし、どこまで出来るのか不安だったので。
(たとえば、名前規約、複数形でなければならないとか
このフィールドは違う設定ファイルに定義されてなければならないとか)
0672nobodyさん
2008/03/01(土) 15:23:37ID:uin8SgpQ多分、それもあるとは思います。
しかし、同じ設定のまま、phpMyAdminではnullを入れられます。
もちろんこのときに発行されるSQL文は、
INSERTとかUPDATE 〜〜〜 number_field = null ですね。
MySQL側で設定できたとしても設定は変えられないと思われるので、
アプリ側で対処したいのですが。
0673nobodyさん
2008/03/01(土) 15:30:04ID:???今、このようなアドレスにいるとして、
ここから、以下のようなアドレスを作り出す
一番シンプルな方法は何でしょうか?
(param1の内容だけを変えたいということです。)
/controller/action/1/2/param1:z/param2:b?c=test1&d=test2
URL文字列形式じゃなくて、params配列形式でもOKです。
むしろこっちのほうがいいです。
0675nobodyさん
2008/03/02(日) 01:41:30ID:???今それでやってますけど、これぐらいフレームワークが用意していてもよさそうじゃない?
関数名($this->params, array('named'=>array('param1'=>'z')))
ってな感じ。
0677nobodyさん
2008/03/02(日) 12:37:53ID:???ドキュメントが少ないからソース解析しながら大変だけど
この作業がわりと楽しい
理解を深めながらコーディングできる。
ちょっとした不具合でもデバッグ文でググるんじゃなくて
まずソース解析、こっちの方が正しくて速いことに気づいた
0678nobodyさん
2008/03/02(日) 12:40:00ID:???Akelos自体にドキュメント無くてもRoRと照らし合わせれば
ドキュメントが要らないくらい、完全コピーされてるw
0679nobodyさん
2008/03/02(日) 12:42:47ID:???なんで流行してないのかわからないwww
ドキュメント量が少ないと何も出来ない人が多いからか?
0680nobodyさん
2008/03/02(日) 12:47:14ID:???これ見ると、もう萎える
どんだけブームでもOOPじゃないフレームワークはいらない
0681nobodyさん
2008/03/02(日) 13:03:23ID:???キティガイすぎワロタ
0682nobodyさん
2008/03/02(日) 13:05:31ID:???function findAll($conditions = null, $fields = null, $order = null, $limit = null, $page = 1, $recursive = null) {
0683nobodyさん
2008/03/02(日) 13:06:44ID:???0684nobodyさん
2008/03/02(日) 13:09:50ID:???嘘つくなら、せめてコンマだけはちゃんといれようなw
null,null と打ってそれを適当な回数コピペしたのばればれだから。
0685nobodyさん
2008/03/02(日) 13:14:03ID:???Akelosはメソッドの引数がオブジェクトなん?
$params = new Parameter()
$params->setConditions(・・・);
$params->setFields(・・・);
$params->setOrder(・・・);
findAll($params)
いくら引数が少なくてもこんなのはいやだw
0686nobodyさん
2008/03/02(日) 14:03:11ID:???1.2からfind系関数はfind()に全て纏められて、推奨引数もシンプルになっている。
http://bakery.cakephp.org/articles/view/new-cakephp-releases
簡単に言うと find($type, $options) この二つだけ。
$typeには文字列all, first, list, countなどが入る。
この指定でそれぞれfindAll(), read(), generateList(), findCount()に対応するようになった。
$optionsには検索条件を指定する連想配列を入れていく。
要するに、 >>682 の引数conditions, fields, order, limit, page, recursiveなどを纏めて管理できる。
CakePHPの投げやりな引数は少しずつ改善されつつある。
頭の悪い愚痴ばかり垂れる暇があったら記事読めば?
0687nobodyさん
2008/03/02(日) 15:43:01ID:???0688nobodyさん
2008/03/02(日) 15:43:59ID:???0689nobodyさん
2008/03/02(日) 15:50:03ID:???readは違う。モデルのインスタンスはテーブルの一行に当たるんだが、
readは、この一行のデータをモデルに読み込むもの。
具体的に言うと、$model->dataが変更されるもので、
find系メソッドはクラスメソッドのような扱いで、
インスタンスの状態は変えずに、値を取得するもの。
0690nobodyさん
2008/03/02(日) 17:48:14ID:???こんな感じでgroup by使って集計ランキング作りたいときfind使ってる?
0691nobodyさん
2008/03/02(日) 18:32:01ID:???$this->User->findByEmail('hoge', 'first', array('recursive' => 1));
発行されたSQL
SELECT "User"."first" FROM ほげほげ WHERE "User"."email" = 'hoge' ORDER BY recursive" 1 ASC LIMIT 1
SQL Error: 1: SQL logic error or missing database
よええ…
0692nobodyさん
2008/03/02(日) 18:59:37ID:???0693691
2008/03/02(日) 19:11:42ID:???がどうにかなるのかなと思ったんだよ
もちろんこっちのヌルヌルならSQL通るよ
0695nobodyさん
2008/03/02(日) 20:45:48ID:???こちらは結局今までどおりヌルヌルで書くしかないってこと?
0696nobodyさん
2008/03/02(日) 21:22:14ID:???0697nobodyさん
2008/03/02(日) 21:28:46ID:???nullが一個多いぞ。お前使ってないで文句言ってるだろw
で、たった四つの引数でなにごちゃごちゃいってんの?w
0698nobodyさん
2008/03/02(日) 21:31:13ID:???カラム名をasで別名で使う場合は
直接SQL書かないとダメなんかな
select ここがカラム名だけじゃない複雑な場合 from test
は直接SQLがいいのかな
0699nobodyさん
2008/03/02(日) 21:34:46ID:???これがオブジェクト指向なん?wwwwwwwwwwwwwwwwwwwwwwwwww
0700nobodyさん
2008/03/02(日) 21:35:58ID:???0701nobodyさん
2008/03/02(日) 21:43:22ID:???>>686で書かれているfind系の新しい記述法がfindBy系に適用されるのかどうか
単に確認したいだけなんだけど
現状のCakeだと、findBy系の使用が推奨されること多かったから使ってる人も多いだろうし
0704nobodyさん
2008/03/02(日) 23:48:57ID:???自分のFWのスレいって有用な情報で賑わせればいいのに(´・ω・`)
0705nobodyさん
2008/03/03(月) 00:12:48ID:???そうか、1年前以上も前からはじめてたんだな。
このスレ立てて正解だった。
あれから俺もずいぶんと成長したな。
いまじゃユニットテストもちゃんと使えるようになったし。
Akelosは名前もすっかり忘れていたが、こっちも俺が立てたんだったなw
こっちは残念ながらぜんぜん伸びず。
たぶんね。俺がつかって色々書いているからスレ伸びてるんだと思うよ。
Symfonyはたぶん、4月ぐらい?から俺が使うから伸びると思うよ。
PHP4対応を考慮しなくて良い、個人的なソフトで使う。
それまで、我慢してくれよ。
0706nobodyさん
2008/03/03(月) 00:17:28ID:???0707nobodyさん
2008/03/03(月) 00:27:38ID:???引数は全部ひとつだけしかない。
foo(array('hiki1'=>1, 'hiki2'=>2, 'hiki3'=>3))
0708nobodyさん
2008/03/03(月) 01:08:53ID:???それについていくしかない。
英語が言語的に最低でも、みんな英語使ってるなら使うしかない
0709nobodyさん
2008/03/03(月) 01:50:22ID:???0710nobodyさん
2008/03/03(月) 01:51:11ID:???0711nobodyさん
2008/03/03(月) 01:58:44ID:???0712nobodyさん
2008/03/03(月) 02:57:27ID:???0714nobodyさん
2008/03/03(月) 13:22:21ID:???設計的にどうなん?
0715nobodyさん
2008/03/03(月) 13:37:57ID:???var $default = array('driver' => 'mysql',
を
var $default = array('driver' => 'postgres',
に変更したらまあ当然の様にエラーが出た。
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'host='example.com' port='5432' dbname='bakesale' user='watashi' password='hogehoge'' (11004) in C:\www\temp\cake\cake\libs\model\dbo\dbo_postgres.php on line 90
しかし、
var $default = array('driver' => 'mysql',
に直しても何時までも上記エラーが出てしまう。
cakePHPでは一度読み込んだ設定ファイルをどっかに溜めてたりするのかな?
教えて下さい偉い人!
0716nobodyさん
2008/03/03(月) 14:32:56ID:???そこでなんですが、ループで回しやすいように配列を整えると思うのですが、この作業はどこでやるのが正しいんですか?
コントローラ/ビュー/ヘルパーどこがよいのでしょう。
0717nobodyさん
2008/03/03(月) 16:40:58ID:???っていうかそればMVCの基本だよね?
0718nobodyさん
2008/03/03(月) 17:36:05ID:???コントローラーはバリデーションして、モデルからデータを取得して、ビューに変数をセットするだけなんじゃないの。
0720nobodyさん
2008/03/03(月) 19:05:23ID:???0721nobodyさん
2008/03/03(月) 19:21:11ID:???MingやGDのような外部ライブラリと、それを操作する関数群をCakeに持ってくる場合
ライブラリは当然app/vendorsフォルダに入れれば良いと思うのだけど、
関数群の方はどうしてやるのが良いんだろう?
呼び出し元が二か所になるので、呼び出し側のコントローラにベタでは書きたくないので
そうするとこいつもvendorsの中に入れてコントローラ内でvendor()で呼ぶのか
それとも専用コントローラを作るのか。はたまたコンポーネント?
ちょっと知恵を貸して下さい。
0722nobodyさん
2008/03/03(月) 21:01:55ID:???0723nobodyさん
2008/03/03(月) 21:06:07ID:???コンポーネントってMVCでいうところのコントローラなんだから
そこからモデルを直接参照しないで何するんだ?
$Component->Controller->Modelだときもちわるくね?
0724nobodyさん
2008/03/03(月) 23:13:06ID:???> 基本はコントローラ以外にロジックを書くべきじゃないと思ってる。
> っていうかそればMVCの基本だよね?
ぷっ。3ページ目のBad Cakeそのものですねwwww
http://cakephp.org/files/OCPHP.pdf
0726721
2008/03/04(火) 03:21:21ID:???レスサンクス。やっぱりそれが妥当なんですね。
つかまだCake使い始めだからってのもあるのだけど、
こういう事する場合、あれでもこれでも出来るじゃなくて、
あれの場合はこういう手続きで。みたいなのきちっと一本化して欲しいなぁ。
こういう答えが明確でない事で悩む時間がかなり多い。。
もちろん関数とパラメータの意味を調べる為にソースにらめっこにも時間が取られるわけですが。。
社内ライブラリ群でやってる同規模の案件の倍以上かかってるよorz<当然残業コース。。トホホ
0727nobodyさん
2008/03/04(火) 03:35:17ID:???コンポーネントの意味がわかってねーなwww
Mコンポーネント
Vコンポーネント
Cコンポーネント
コンポーネントはMVCのそれぞれにあるんだよwww
低フレームワークをいじってるやつの基礎知識の無さは半端ねーな
0728nobodyさん
2008/03/04(火) 03:41:25ID:???フレームワーク覚えながら仕事できるっていい会社ですね
基本的に勉強は勤務外だから
とろとろ覚えながらやるなんて、まず無理
0729nobodyさん
2008/03/04(火) 09:30:35ID:???だからぁ
Mコンポーネント…Behavior(同じ処理に振る舞いを付ける時)
Vコンポーネント…Helper(表示に関してロジックが必要な時)
Cコンポーネント…Component(手続きを纏めて再利用する時)
Cakeの中ではCコンポーネントの事を単にコンポーネントって
呼んでいるんだから、いかに的外れな事を言ってるのか分かってね。
>>723
直接参照で問題ないでしょ。
データソースを扱いたいためにコンポーネントが
コントローラに依存し出したらそれこそ意味不明。
>>714
何が問題だと感じているの?
0731nobodyさん
2008/03/04(火) 10:25:20ID:???> 何が問題だと感じているの?
>>729
コントローラに追加していないモデルを
どうにしかしてコンポーネントで使うということです。
0732nobodyさん
2008/03/04(火) 11:34:34ID:???> フレームワーク覚えながら仕事できるっていい会社ですね
> 基本的に勉強は勤務外だから
家では仕事しない主義なんでw
0733nobodyさん
2008/03/04(火) 11:46:57ID:???現実の構成から考えると、Cakeのコンポーネントはあくまで
コントローラに書く記述の共通化用だからな
コントローラをインジェクションして使うものだと割り切った方がいいのでは?
0734nobodyさん
2008/03/04(火) 12:23:27ID:Oi3CmVe3http://api.cakephp.org/1.2/auth_8php-source.html#l00674
ClassRegistry::init('名前')でモデルを使用可能にしているみたいだけど。
0735nobodyさん
2008/03/04(火) 12:24:43ID:???コンポーネントに渡すなんてことをしないで、
コンポーネント内部で、uses()を使って
モデルを直接読んでいいですかね?
0736nobodyさん
2008/03/04(火) 13:39:48ID:???コントロール=コンポーネントていう考えがおかしい
M
V
C
コンポーネント
まったく別物だからwww
=で考えるなよバカwww
0737nobodyさん
2008/03/04(火) 13:42:36ID:???確かにコントローラとコンポーネントを=で結びつけるのは変だね
0739nobodyさん
2008/03/04(火) 14:08:44ID:???Vコンポーネントの中にはVの処理をカプセル化したもの
Cコンポーネントの中にはCの処理をカプセル化したもの
だからCコンポーネントの中にMやVの処理を入れてはダメ、Cの処理だけ
複雑化したら、それはコンポーネントといえない
なぜなら再利用化に適さないから
コンポーネントは複雑な処理じゃなくて、出来るだけ単純化したものを書くべき
0740nobodyさん
2008/03/04(火) 14:09:38ID:???CakePHPでは
Controllersフォルダ中にComponentsフォルダがあるの知ってる?w
Modelsフォルダの下behaviorsフォルダ。
Viewsフォルダの下にHelpersフォルダ。
どうせ知らなかったでしょ? 勉強してでなおしなさい。ば〜かば〜か
0741nobodyさん
2008/03/04(火) 14:12:50ID:???誤解の元だから。
なんでCコンポーネントていえないのかね
0742735
2008/03/04(火) 14:15:36ID:???生成しちゃうのってどうなんでしょうか?
>>734がネタばれしちゃったけど、標準の一部のコンポーネントでは
直接生成しているのよね。
それなら設計的にはコンポーネントにもusesプロパティが
あってもいいと思うんだけど、実際には無い。
コンポーネントにusesプロパティが無いのがおかしいのか、
それともコンポーネントでモデルを直接生成している
一部のコンポーネントの方がおかしいのか。
0743nobodyさん
2008/03/04(火) 14:16:14ID:???0744nobodyさん
2008/03/04(火) 14:17:22ID:???ここはCakePHPスレなので、Componentで問題ありません。
誤解のもの? あなた誤解していたんですかw
0745nobodyさん
2008/03/04(火) 14:18:20ID:???0746nobodyさん
2008/03/04(火) 14:19:09ID:???生成するてのは再利用化に欠けるんだよ
MとCにそれぞれコンポーネント作って
つなげればいいじゃんか
0748nobodyさん
2008/03/04(火) 14:22:37ID:???シーコンポーネントなんて恥ずかしい言い方は論外として
コントローラコンポーネントでぐぐったらStrutsが出てきた。
どうやらJava厨かw
CakePHPスレでStruts用語使わないでくれないかな。誤解の元だから。
0749nobodyさん
2008/03/04(火) 14:23:59ID:???単にお前の用語の使い方が間違っているんだよ。
Cコンポーネントなんて用語はCakePHPにはでてこない。
0751nobodyさん
2008/03/04(火) 14:26:28ID:???0752nobodyさん
2008/03/04(火) 14:27:29ID:???その質問は強烈すぎw
Cake知らない人には答えられないし、
答えたとしたら、自分のマヌケさを露呈することになるw
答えまだかな?逃げるかな?♪
0755nobodyさん
2008/03/04(火) 14:32:35ID:???behavirosの下ならそれはコンポーネントじゃなくてビヘイビアだろw
0756nobodyさん
2008/03/04(火) 14:36:12ID:???外注先で赤っ恥かきそうだなw
0757nobodyさん
2008/03/04(火) 14:37:01ID:???0758nobodyさん
2008/03/04(火) 14:37:38ID:???0759nobodyさん
2008/03/04(火) 14:39:02ID:???0760nobodyさん
2008/03/04(火) 14:44:18ID:???誰がつなぐのでしょうか?
コントローラからモデル内部のビヘイビアは
普通直接見るもんじゃないですよね?
コントローラで、コンポーネントとモデルをつなぐというのならわかるのですが?
あとここはCakePHPスレなのでCakePHP用語で話してください。
■ このスレッドは過去ログ倉庫に格納されています