【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/
0620nobodyさん
2008/02/27(水) 17:54:15ID:???ヘルパー
function test($hoge){
echo $hoge;
}
コントローラー
$this->set('hoge','てんこもり');
これでとりあえずビューにわたるだろ?
んで、ビューからヘルパーを呼ぶと。
$helper->test($hoge);
こんで $hoge の内容が表示されますよっと。
0621nobodyさん
2008/02/27(水) 19:02:44ID:???<?php $helper->init($settings); ?>
初期化命令を毎回呼べと?
0622nobodyさん
2008/02/27(水) 19:23:49ID:???ってビューに渡しておいてビューの頭で
$helper->settei($settei);
ってヘルパーに渡してるよ俺の場合
なんかバカっぽいけど。
App::import('Helper', 'MyHelper');
$myhelper = new MyHelper();
$myhelper->settei($settei);
$controller->set('myhelper', $myhelper);
なら渡せないことも無かったけど、MyHelperの中でHtmlHelperやFormHelper呼ぼうとしたら
自動でうまく呼び出せなかったからやめた
MyHelperの中で$this->Html = new HtmlHelper();とか手動でやってやればよかったのかな
そのときは思いつかなかったからやってないけど
0623nobodyさん
2008/02/27(水) 20:00:22ID:pFPJf0/n自己解決しました(笑)
0624nobodyさん
2008/02/27(水) 20:01:37ID:WlN8JrV2それぞれの印象を聞いてみたいです。
俺もCakePHPを使い始めた当初からSmartyを使ってきてる一人なのですが、なんだか
実は結構めんどくさかったりする割に従来のPHP記述でのビューに比べてあんまり
パフォーマンス良くない気がしてきたもので。(例えば、ヘルパーに配列を渡す場合
Smartyでのビューだと細々とめんどくさかったり)
0625nobodyさん
2008/02/27(水) 20:29:10ID:???0626nobodyさん
2008/02/27(水) 21:24:24ID:WlN8JrV2なに?おれおれフレームワークって?
知り合いがZend FrameworkのMVC(この場合はV)をCakeで使ってたけど、あれは意味ねえなあ
0627nobodyさん
2008/02/27(水) 21:25:22ID:pFPJf0/n家に帰るのでIDかわるから、あきらめて説明すると、
コントローラで
$this->params['hoge'] = $data;
に値設定。
ヘルパーからも、$this->params['hoge']にアクセスできる。
$this->paramsを受け渡しに使うのってどうよ?と思うかもしれんが、
paginationもにたように、params['paging']を使っているからいいだろう?
他にClassRegistryを使ったやり方があって、FormHelperとかは
これを使っているみたいだが、なんかグローバル変数あつかっている感じがして却下。
もう一つ、Viewを継承した独自のビューでごちゃごちゃ変数わたしても
できるかもしれんが、余計なものを作らないといけないので却下。
0628nobodyさん
2008/02/27(水) 21:49:42ID:???0629nobodyさん
2008/02/28(木) 02:37:50ID:???$model->findAll()するとき、有無を言わさずjoinしてるみたいなんだけど
これってなんとかならんのかね。
railsだとfind(:all,:include = ...)で指定したときだけjoinとかするじゃん。
0632nobodyさん
2008/02/28(木) 15:35:27ID:???0634nobodyさん
2008/02/28(木) 20:45:21ID:???0635nobodyさん
2008/02/29(金) 08:40:00ID:???時間の無駄やろ。
0636nobodyさん
2008/02/29(金) 08:42:38ID:???頭のいい人間が少人数しかいないから
正しい方向に行くのは常に少人数
0637nobodyさん
2008/02/29(金) 09:13:18ID:???主流になっている罠w
0638nobodyさん
2008/02/29(金) 09:16:04ID:???0639nobodyさん
2008/02/29(金) 09:21:43ID:???反日感情が大衆を間違った方向へ進ませている
CakePHPも同じ
0640nobodyさん
2008/02/29(金) 09:25:37ID:???小規模フレームワークは乱立しやすく
次から次へと良いフレームワークが出来る
大規模フレームワークはやはり規模がでかいから
乱立しにくい
どうせなら覚える量は少ない方がいい
そう賢い人間の選ぶ答えはsymfony
0641nobodyさん
2008/02/29(金) 09:26:48ID:???フレームワークの数分という意味だからね
0642nobodyさん
2008/02/29(金) 09:29:16ID:???CakePHPも同じ道に行くのはわかるだろう
小規模フレームワークの世代交代は1年単位なんだよね
0643nobodyさん
2008/02/29(金) 09:32:31ID:???簡単な掲示板レベルのものしか作れないね
だから今後も有名どころのCakePHP採用実績はありえないよね
だから廃れるのも速い、その理由からも今年で終わりクセー
0644nobodyさん
2008/02/29(金) 09:35:28ID:???> firefoxのアドオンがおいてある、あのサイトが実はCakePHPで作られていたんだそうです。
0645nobodyさん
2008/02/29(金) 09:40:00ID:???以前は活気のあったmojaviスレが廃れてるのを見れば
お前の好きなフレームワークも同じ道に行くのはわかるだろう w
0646nobodyさん
2008/02/29(金) 09:50:18ID:???アマチュアも使えるきちんとしたFWなら生き延びるだろうけど・・・
CIに期待
0647nobodyさん
2008/02/29(金) 10:14:57ID:???Viewでヘルパーのコンポーネントの呼び出し宣言出来ないとか
Viewで直接モデルをコントロール出来ないとかね
0648nobodyさん
2008/02/29(金) 10:21:05ID:???複雑なロジックはコンポーネント化して呼び出し
複雑なロジックでかつ断片性が内容によってかわるならCakePHPはどうすんの?
0649nobodyさん
2008/02/29(金) 11:20:41ID:???なに、この便利な機能
CakePHP利用してからsymfony使うと
豊富な便利機能にただただ関心
0650nobodyさん
2008/02/29(金) 11:22:31ID:???作者やる気がないから将来性もクソもないがね
やる気のない社長がいる会社の株を買ってるのと同じだね
0651nobodyさん
2008/02/29(金) 11:23:29ID:???いつ開発中止するかわからんフレームワークをよく使えるなwww
0652nobodyさん
2008/02/29(金) 11:24:22ID:???アマチュアには敷居高いからね
流行らなければ廃れていくのは同じ
0653nobodyさん
2008/02/29(金) 11:43:03ID:???フレームワークを次々乗り換えるんじゃなくて
期間的に長く使えるフレームワークしかいらない、
一見、CakePHPは効率よく見えるが
過去資産になりにくい時間の使い方は、非効率
0654nobodyさん
2008/02/29(金) 11:50:01ID:???0から作る案件はかなり少ない
スパゲッティソースでも
今までの過去資産をカスタマイズする方が圧倒的に速い
0655nobodyさん
2008/02/29(金) 12:45:25ID:???0656nobodyさん
2008/02/29(金) 14:26:26ID:???ただ知名度が優先して使ってる人が多くなってるだけ
0657nobodyさん
2008/02/29(金) 14:31:12ID:???フレームワークが主流にならないと
初心者がフレームワーク出来ますとか
調子いい事を言うからな
初心者と経験者の差をはっきりさせて
初心者がすぐに食える状態を無くして欲しい
0658nobodyさん
2008/02/29(金) 14:32:41ID:???高級志向の大人のフレームワークがsymfony
0659nobodyさん
2008/02/29(金) 14:46:43ID:???さびれてんだからさwww
13: フランチョスとsymfony (36)
http://pc11.2ch.net/test/read.cgi/php/1201177567/l50
0660nobodyさん
2008/02/29(金) 14:51:07ID:???http://pc11.2ch.net/test/read.cgi/php/1204113475/l50
一時期 symfony か CakePHP かって時期あったけど
これほどにまでsymfony 廃れてるとは知らんかった。
まあ、どうでもいいけど。
0661nobodyさん
2008/02/29(金) 14:51:22ID:???> 長い目で見れば、流行だけで中身の薄いものは確実に消える
それ具体的に何年後?
そりゃいつかは何もかも消えるだろうなw
そのときに、ほら消えた。俺の言っていたことは正しかったんだ。と
言えない様に、今何年後に消えるのか言ってもらおうか。
それまでに消えなければ、お前の言っていることは間違いだとはっきりする。
そのとき俺がおまえのことを思い出すことは無いだろうが、
少なくともおまえ自身は、自分の予測が外れたことを身にしみて感じるだろうw
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:???コントローラーはバリデーションして、モデルからデータを取得して、ビューに変数をセットするだけなんじゃないの。
■ このスレッドは過去ログ倉庫に格納されています