【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/
0202nobodyさん
2008/01/11(金) 00:37:03ID:edIhawVfちょいやばですね
0204nobodyさん
2008/01/11(金) 20:24:44ID:???0205nobodyさん
2008/01/12(土) 01:07:43ID:???コントローラ以外で、モデルを使う方法他に何がある?
0206nobodyさん
2008/01/12(土) 07:06:39ID:???0207nobodyさん
2008/01/12(土) 09:24:00ID:???それをBehaviorにしてBehaviorで使うこともありますし、
テーブルに保存されたデータをもとに値を返すComponentも考えられますし、
コントローラ以外のどこででも、モデルを使うことって考えられますよ。
0208nobodyさん
2008/01/12(土) 21:32:01ID:4ugQnDqA少なくとも
「早く開発できる」
も大切ですけど、
「規約に沿った開発」
を心がけた方が最終的には良いかと思いますが、いかがでしょうか。
0210nobodyさん
2008/01/13(日) 01:41:55ID:???こういうやつとは仕事したくないな。
汚いソースを読まされそうだ。
0211nobodyさん
2008/01/13(日) 10:00:42ID:???1つのアクションでしか使わないモデルを、
コントローラ全体から呼び出すのはどうなのかな?
あまり、変わらなければ、規約に沿ったほうがいいね。
0212nobodyさん
2008/01/13(日) 14:32:44ID:???さすがにテンプレートやヘルパーでモデル呼び出しはしないけど
ヘルパーのようにモデル同士が連携したくなる場合なんてざら。
開発規則で決めればコンポーネントからモデル呼び出しも十分
視野に入るだろ。
そもそもコントローラの責任範囲はあまりに広すぎる。
save()時に関連キーの値を意識しなきゃいけないとかアホだろ
モデルに任せとけよそんなもん。
0213nobodyさん
2008/01/13(日) 19:43:12ID:???本当にそう?
たとえば、xoopsなんかにある、”ブロック”
メインのページの左右に表示され、ページの中のコンテンツとは
直接関係無いような情報(もちろんデータはデータベースにある)を
表示するとき、それをどのように作る?
0214nobodyさん
2008/01/13(日) 19:47:23ID:???悪いことは言いたくないが、一つだけ言わせてくれ。
function foo($v1=null, $v2=null, $v3=null) {
if($v1がなんたらだったら) {
$v1 = $v2;
$v2 = $v3;
}
}
こういうコードはやめてくれ。引数とコードがわけがわからなくなる。
0216nobodyさん
2008/01/13(日) 20:39:16ID:???0217nobodyさん
2008/01/13(日) 21:12:12ID:???0218nobodyさん
2008/01/13(日) 21:52:00ID:???Cakeだからといって特別なことはございません。
0219nobodyさん
2008/01/13(日) 22:26:54ID:???トランザクションに関してはデータベースごとに構文が違うわけで、
データベースの違いを吸収するCakePHPには
当然トランザクションの機能があってしかるべきでは?
0220212
2008/01/14(月) 03:54:21ID:???http://bakery.cakephp.org/articles/view/transaction-behavior
0221nobodyさん
2008/01/14(月) 03:54:41ID:???0223nobodyさん
2008/01/14(月) 11:48:41ID:???しょぼーん
0224nobodyさん
2008/01/14(月) 13:10:50ID:???1.2はbakeでそこそこいけるぞ
0225nobodyさん
2008/01/14(月) 14:59:49ID:p06mFmgfcake1.2用って書いてあってサンプルコードまで載ってるのに、これ以上どうしろと。
0226nobodyさん
2008/01/14(月) 22:01:03ID:qwz7LRgA0227nobodyさん
2008/01/15(火) 02:37:42ID:???0228nobodyさん
2008/01/15(火) 11:58:53ID:???こういうの誰か作って配布してたりする?
0229nobodyさん
2008/01/15(火) 18:18:48ID:???0230nobodyさん
2008/01/15(火) 21:44:26ID:???0231nobodyさん
2008/01/15(火) 21:49:55ID:???利用者レベルじゃ使用できんだろ。
コードはいた後、コードいじらないと使い物にならないんだから。
0232nobodyさん
2008/01/16(水) 00:10:13ID:???例えば、「モデルが無いですよ」とかエラーを吐いてくれるとこで、作るべきファイル名やコードをブラウザが表示してくれてるけど、それを手動で作る代わりに「(デフォのでいいから)作成」ってボタンがあったら嬉しいじゃない?
0233nobodyさん
2008/01/16(水) 00:42:46ID:???0234nobodyさん
2008/01/16(水) 00:46:04ID:???0235nobodyさん
2008/01/16(水) 03:05:48ID:???0236nobodyさん
2008/01/16(水) 08:37:03ID:???0237nobodyさん
2008/01/16(水) 08:57:12ID:???まあそれによってフレームワーク自体が肥大するのは困るけど、これはそこまでたいした話じゃない。
0239nobodyさん
2008/01/16(水) 11:33:15ID:???0240nobodyさん
2008/01/16(水) 11:49:22ID:???app/config/bootstrap.php に今はベターっと書いてるんだけど
これだとアプリごとに書く必要があって かといってcake/bootstrap.phpに書いちゃうと
バージョン上げる時に忘れて上書きしちゃいそう
0242nobodyさん
2008/01/16(水) 12:14:38ID:???コンポーネントはいちいち利用宣言するのがめんどくさくて
ほとんどapp_controllerに書いちゃってるけど、まずいかな?
0243nobodyさん
2008/01/16(水) 14:48:27ID:???bootstrap.php で読み込ませてる
0244nobodyさん
2008/01/16(水) 15:53:09ID:???汎用的な関数は、app/config/bootstrap.php に書いてる。
app以下にあるし、空ファイルだし、そのために作られたファイルだろ?って思ってる。
汎用的なクラスは、vendersにおいて使ってるけど。
0245nobodyさん
2008/01/16(水) 15:56:29ID:???間にもう一層入れたい場合どうやる?
Controller
↑
AppController
↑
MyController
↑
FooController
このとき、
class FooController extends MyController
ってすると、MyControllerがいませんっていわれちゃう。
0247nobodyさん
2008/01/17(木) 10:34:58ID:???何で作る?コンポーネント?
このクラス、モデルデータを必要とするんだよね。
何で作ればいいんだろう?
0248nobodyさん
2008/01/17(木) 11:22:09ID:???vendors/oreore.inc.php に書いて
app/config/bootstrap.php から vendor('oreore.inc');
で読み込むことにしますた さんくす
0249nobodyさん
2008/01/17(木) 11:54:11ID:???app/config/core.php
define('DEBUG', 2);
この状態で、特定のページだけデバッグ情報を出さないようにって出来ないものかな?
1)XMLを出力するプログラム
2)それを受け取って処理するプログラム
1の方はもう出来上がってて、デバッグが出力されると構文が崩れて困る。
かといって、define('DEBUG',0);にすると、2の方の開発が困る。XMLは動的なものを使いたい。
0250nobodyさん
2008/01/17(木) 13:27:06ID:???App::import('Contoller', 'MyController'); //昔はloadController
class FooController extends MyController
ってすればいいんじゃないの?
0251nobodyさん
2008/01/17(木) 16:34:27ID:2woYNb+hヒント、
function beforeRender()
{
if ($this->layout=='ajax') Configure::write('debug', 0);
}
これでわかったら、スーパーひとしくんプレゼント!
0253nobodyさん
2008/01/17(木) 18:42:25ID:???詳しく聞いて無いから間違いかもしれないけど、
たぶんそれは設計ミス。
モデルとコントローラーとビューは疎結合にあるべき。
答えとしてはコンポーネントにモデルインスタンスを渡せば良いと思う。
ビューの部分のロジックは、ヘルパーに委譲。
本当にどうしてもどこでも使いたいなら、bootstrapに書くか、vendorで外部ライブラリとして読み込ませる。
0255nobodyさん
2008/01/18(金) 13:06:23ID:???DBのテーブル名やカラム名で溢れてくるんだけど何か間違ってる?
JAVAもRORも途中でめげたんで他との比較は出来ないけどMVCってこういうもんなん
0256nobodyさん
2008/01/18(金) 13:10:12ID:???0258nobodyさん
2008/01/18(金) 16:28:03ID:???調べるついでにマイナーだと思われるものを書いていくよ。
ざっくり調べただけだから間違いがあるだろうが許せ。
というか、誰か補足してくよw
・Configure::store('AAA', 'a', array('data'=>'123'));で値保存。
/app/temp/cache/persistent/a.php ができる。
Configure::load('a'); でa.phpファイル読み込み
pr(Configure::read('AAA')); で保存した値表示。
・flay ・・・Text-to-HTML Textile見たいな物?
wiki文法みたいに簡易な文法で書いたらHTMLに変換してくれる?
・MagicDb ・・・ 拡張子に頼らないファイル解析?
MagicFileResourceを継承したクラスを作ることで対応フォーマットが増やせそうだが、
初期で対応しているフォーマットはなし?http://www.magicdb.orgは関係ありか?
・MediaView ・・・ なんか拡張子に対応したMIMEタイプリストがあるが?
header("HTTP/1.1 206 Partial Content");とかあるし、ファイルダウンロードさせたいときに使う?
・String ・・・ えー? UTF8対応? 今度からこれ使えと?
・ThemeView ・・・ CSS切り替えみたいなもんか?
・XML ・・・ XMLあつかえるのね。
・Debugger ・・・ デバッガ。便利だよ。デバッガ。
・Socketと名のつくもの ・・・ まあソケットをそのまま触れるのでしょう?
・Controller::isAuthorized() ・・・ 認証系で使うべきものなんだろう。
・I18n L10n ・・・まああれだ。俺みたいに日本専用でビューに直接日本語書いている奴には不要ってこった。
・FormHelper::secure トークンだしてくれる
・PagesController 次に進む なんてページを作るのにいいんだろうなとは思う。名前からして。
・Model::deconstruct ・・・ フォームのフィールド、日付を年ドロップダウン、月ドロップダウン、日ドロップダウン、に
分かれて入力されているのをひとつにしてくれるっぽい。
・TreeBehavior ・・・ テーブルをツリー構造として見れる? moveupとかmovedownとか
・TextHelper・・・autoLinkってのがある。リンクっぽいテキストをリンクにしてくれる。
TextHelper::toList ・・・ 日本人には不要w
・ClassRegistry ・・・ ようはオブジェクトがどこからでも見れる? グローバル変数的なので使い方に注意。
0259nobodyさん
2008/01/18(金) 16:30:18ID:???フィールドの型に応じたフォームが自動で出てくるけど、
これって、ヘルパーがモデルを見てるってことだよね?
それって設計的にありなん?
0260nobodyさん
2008/01/18(金) 17:24:57ID:???結局無かった(しかもおそらく見つけられなかっただけでどっかにある)時の徒労感ってなかなかいいよね
英語弱いからなあ
0261nobodyさん
2008/01/18(金) 17:27:59ID:???リファレンス本欲しいな。
0262nobodyさん
2008/01/18(金) 19:38:04ID:/74lUS2rどういう風にやるのがスマートでしょうか?
0263nobodyさん
2008/01/18(金) 20:11:24ID:???多言語対応のあれなのかようやくわかったありがとう
0264nobodyさん
2008/01/18(金) 21:09:17ID:???0265nobodyさん
2008/01/18(金) 21:10:28ID:???どこみてんだ。
0266nobodyさん
2008/01/18(金) 21:40:04ID:???レス先走りすぎだ。
1.INSERT ... ON DUPLICATE KEY UPDATEしたいんですが、
↓
2.直接SQL文発行しる!
↓
3.標準でO/Rマッパー無いの?
煽るのならこの順番だろうがw 2番を飛ばすな
0267nobodyさん
2008/01/18(金) 21:43:48ID:???前どっかで同じことをいってたやつがいたな。
CakePHPか忘れたけど。
設計とか詳しくないからただの一つの意見だけど、
便利だからまぁいいんじゃないかなと思う。
疎結合っていう観点からはよろしくないのかもね。
Railsも同じ機能ついてたきがす
0268262
2008/01/18(金) 22:44:42ID:???0269nobodyさん
2008/01/19(土) 09:25:13ID:???「ケーキPHP」より「ケイクPHP」のほうが言いやすい
0270nobodyさん
2008/01/19(土) 10:53:43ID:???0271nobodyさん
2008/01/19(土) 11:44:58ID:???0272nobodyさん
2008/01/19(土) 11:57:21ID:???それともこれってなんか変な設計?
0273nobodyさん
2008/01/19(土) 12:10:58ID:???ファイル名:/app/views/test.php
<?php
class TestView extends View {
}
?>
あとは、コントローラで
var $view = 'Test';
と書く。
これって、公式な仕様だっけ?
0274nobodyさん
2008/01/19(土) 15:04:12ID:???requestActionでURL形式でコントローラを呼び出して
コントローラ経由でモデルにアクセスしてデータ参照?
どう考えてもパフォーマンス悪すぎるだろ?
ヘルパーにコントローラからモデルデータを直接与える方法がないから
一旦コントローラからビューにモデルの値をsetして、
ビューがヘルパーの関数を呼び出すたびに引数にデータをセットするのか?
何でこんなに結合度が高いんだ?
0275nobodyさん
2008/01/19(土) 16:45:02ID:???ヘルパーごときがモデル様のデータを直接欲しいとか100年早いぜ。
欲しいならコントローラさんに話を通して、コントローラさんに必要な分を最初っから揃えてもらいな。
ってコンポーネントさんが言ってた。
0276nobodyさん
2008/01/19(土) 17:32:36ID:???とか、
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo $html->link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
とか、テーブル名(モデル名)が必ず付いて回るとか、ありえないんだけど
こういうものなの?
inputタグだとソース上から見えちゃうしーー
0277nobodyさん
2008/01/19(土) 17:37:03ID:by/o8aKs日本人ならonigiriだと思うんだが
0278nobodyさん
2008/01/19(土) 18:27:05ID:???http://thumb.uploda.org/file/uporg1209264.jpg
0279nobodyさん
2008/01/20(日) 00:56:33ID:???> ヘルパーごときがモデル様のデータを直接欲しいとか100年早いぜ。
> 欲しいならコントローラさんに話を通して、コントローラさんに必要な分を最初っから揃えてもらいな。
それが簡単にはいかないんだよ。
ヘルパーがどのタイミングで作られるか知ってる?
コントローラのrenderの中でビューのrenderに処理がわたり
ビューがヘルパーを作っている。
つまりコントローラが動いているときは、ヘルパーはまだ生まれてないんだよ。
そしてヘルパーにはコントローラを知る方法が無い。
0280nobodyさん
2008/01/20(日) 03:36:20ID:???0281nobodyさん
2008/01/20(日) 07:04:04ID:???ソースとかある?
0282nobodyさん
2008/01/20(日) 16:34:25ID:???配列まみれで思った以上に見づらい書きづらいなこれ
テキストエディタでちまちま書いてるからarrayのどっかおかしくてもパッと見わかんないし
0283nobodyさん
2008/01/20(日) 18:12:40ID:???そりゃ呼出しごとに、関数呼び出しの前に、
URL文字列から関数判断して、
コントローラを初期化して使えるようにしてから
読んでいるんだから遅いでしょ。
0285nobodyさん
2008/01/21(月) 02:34:59ID:???0286nobodyさん
2008/01/21(月) 08:20:37ID:T79KO08khttp://groups.google.com/group/cake-php/msg/39c1ed08657b19c1
何かヒントあるかも。
0287nobodyさん
2008/01/21(月) 17:56:41ID:64B8kuvtrequestAction を 同じページで6箇所使ったら使い物にならないくらい重くなったよ。
できるだけ、使わないほうがいい。
それで僕は、設計を書き直しました。
0288nobodyさん
2008/01/21(月) 18:30:58ID:???Cake1.2にはConfigureというクラスがある。
これはいろんな場所(コントローラだったりビューだったり)で、
設定を読み書きできるクラス。読み書き先はファイルだ。
これの保存先をデータベースにして、普通のテーブルと同じように
設定できるようにする。そのとき、データベースを使ったConfigureを
どのように作るべきか?
普通に考えてConfigureの中身を変えるだけになるだろう。
つまり、Configureはグローバルに参照できObjectを継承しただけのクラス。
ゆえに、Configure内部で、App::import('Model', 'Configure');を
使って、内部でモデルのインスタンスを生成するしかない。
コンポーネントやヘルパーにしたり、
コントローラでモデルを渡したりと言ったことはしない。
クラスが直接モデルを扱う。
きっとこれが正しい設計だと思うが、反論はあるかな?
0290nobodyさん
2008/01/22(火) 04:15:11ID:???そのへん全部ヘルパーに押し込むのが理想だけどめんどい
0291288
2008/01/22(火) 18:12:32ID:???こういうときは普通こうするだろ!って煽りまってたのに!
結局データベースを参照する設定クラスのようなものは
フレームワーク的なやり方ってないのね。
App::importで直接モデルを操作するしかないのか。
あとログもテーブルに格納するようにしようかなとか
思っているんだが、なんかこれも同じ道をたどりそうだ。
0294nobodyさん
2008/01/22(火) 21:16:39ID:???Model->transactional = true;
にしてコミットしたいところで
Model->transactional = false;
にすればいいの?そんな簡単にはいかないか
0295nobodyさん
2008/01/22(火) 21:29:30ID:???一つ、または複数のモデルへの複数の操作を
一つにするものなのだから、
モデルにtransactionalなんてのが
あるのはおかしいと思いませんか?
0296nobodyさん
2008/01/23(水) 02:25:43ID:???0297nobodyさん
2008/01/23(水) 12:24:04ID:???じゃあ、商品の在庫が入った商品データモデルと
注文されたときに作られる注文データモデル。
注文データを作って在庫を減らすという処理を一つのトランザクション
にするとして、いったい誰がどのモデルをコミットするんだい?
そして、そのモデルがコミットするべきだという理由は?
0298nobodyさん
2008/01/23(水) 14:04:39ID:???0299nobodyさん
2008/01/23(水) 15:17:23ID:???無いよ?
0300nobodyさん
2008/01/23(水) 15:55:49ID:???association使えって事だろう
0301nobodyさん
2008/01/23(水) 16:07:07ID:z/2JwMmbはずかしながら comit とか考えたことないな。
データばぐらなくない?テキストファイル、CSVデータなら書き込んだりするとバグるときあるんで
ファイルロックはするけど。
■ このスレッドは過去ログ倉庫に格納されています