トップページphp
1001コメント315KB

【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/
0567nobodyさん2008/02/21(木) 23:22:30ID:???
思ったんだけど、お気に入りにshop_id入れるってのもアリだな。
というか引っ張り出すデータを軽くしたい時はそうしてる。
0568nobodyさん2008/02/21(木) 23:35:28ID:???
>>566

cake使う意味あるの?w

↑でもでてたけどアマチュア向けのFWだし
自分で書くなら他のがおすすめ
05695592008/02/22(金) 01:11:47ID:???
冷静に読んだら可笑しな事書いてますね。ちと整理をかねて勉強し直してみます(納期許す範囲でw。

>566
私もイラっと来てquery使おうとしてたんですが、ページングしたかったので
とりあえず今はpaginateにWHERE句の後ろ全部渡す形にしちゃってますorz

皆様どうもありがとう。
0570nobodyさん2008/02/22(金) 01:16:58ID:???
あ、リロードしてなかった。
>567
設計上可能ですし私もそれ考えたのですが、
なんかそれをやると負けた気がして迷走してましたw
0571nobodyさん2008/02/22(金) 01:31:38ID:???
>>570
正しいか分からんけど、ロジックシンプルになるし、データも少なくなるしそれでいいんじゃん?
あとはmysql(ver5.1以上)のviewを使うのもありかもね。
0572nobodyさん2008/02/22(金) 05:41:42ID:???
大規模にも対応できるフレームワークはsymfonyてのがようやくわった
CakePHPのアソシエイト部分が小規模向けに設計されてる
GoogleCodeSearchで中規模程度のソースを結構見たが
大規模化するとかアソシエイト部分が、かなり複雑になっていて
とてもチーム分担できるようなソースでは無くなっている
symfonyはここが簡潔でわかりやすい
0573nobodyさん2008/02/22(金) 09:25:21ID:???
symfonyにはアソシエイトが無い。
だからCakePHPでアソシエイトを使わなければいいだけの話。
0574nobodyさん2008/02/22(金) 09:53:35ID:???
>>573
アソシエイトの意味をわかってないんじゃ。。。
0575nobodyさん2008/02/22(金) 11:55:57ID:???
モデルで共通のライブラリ的な機能を呼び出すとき
CakePHP的にはどうするのが一番いいの?

モデルからコンポーネントを無理やり使う?
ビヘイビアってライブラリというよりか
フックを入れるものだからちょっと感じが違うよね。
0576nobodyさん2008/02/22(金) 12:22:47ID:???
app_model.phpに入れるんでよくね?
0577nobodyさん2008/02/22(金) 13:09:39ID:???
>>576
たとえば、ファイル読み書きライブラリを使うとして、

$handle = $model->fopen($file)
$model->fputs($handle, $data);

とか気持ち悪いとか思わない?
継承関係になってないんだよね。

$model->findAll (このモデルのデータを検索する)
$model->save (このモデルにデータを保存する)
$model->fopen (このモデルとは関係ないが、ファイルをオープンする)
$model->fputs (このモデルとは関係ない、ファイルに保存する)
0578nobodyさん2008/02/22(金) 13:47:10ID:???
それは気持ち悪い
ファイルの読み書きだったら一個モデル作ればいいんじゃね?
モデルってデータの入出力であってモデル=DBのテーブルってわけでもないし
05795782008/02/22(金) 14:02:56ID:???
cakephp的とか考えずにvendorsに入れちゃうのが早いし簡単だけどな
0580nobodyさん2008/02/22(金) 14:48:32ID:???
>>578
今回はファイルを例にしたけど、
そういう汎用的なライブラリって使うでしょ?

そういうのはどうやって使うのがCakePHP的なのかなぁって。

vendersに入れるってことは、

 vendor('aaa/bbb');
 class MyModel extends AppModel {
  function foo() {
    $lib = new Lib();
  }
 }
こんな感じで使うってこと?
0581nobodyさん2008/02/22(金) 14:58:48ID:???
vendorsを使うとして、そうしたら、Vendorsに入れて使えば、
コンポーネントいらないんじゃね?と思えてきた。

コンポーネントは何の為に使うんだろう?
呼び出したコントローラを参照する必要がある場合?

すると汎用的なライブラリはvendorを使ったほうがいいのかな。

たとえばメール送信(1.2のEmailComponent)は
コンポーネントではなく、vendorにするべきじゃないかと思えてきた。

バックグラウンド的にモデルに変更があったらメールするなんて用途もあるだろうし。
そういう場合でもモデルを変更するコントローラで一旦変更を感知して
そこからメールするのがいいのだろうか?
0582nobodyさん2008/02/22(金) 15:02:32ID:???
コントローラ、モデル、(ビューも?)のどこででも使える
vendorsプロパティがほしいな。

class My extends ? {
 var $vendors = array('Aaa', 'Bbb', 'Ccc');
 function foo() {
  $this->Aaa->foo();
 }
}

あとpluginsってフォルダを使っている例を見たことが無い。
0583nobodyさん2008/02/22(金) 16:17:35ID:???
だから"べき"論でいけばMVC意識して書けよ
それがめんどくさいなら無節操にvendors使えばいいだろ
0584nobodyさん2008/02/22(金) 16:32:00ID:???
>>583
うん。それじゃ「べき論」をするということ前提で話を進めましょうか。

どうするのが一番いいのだろうか?
0585nobodyさん2008/02/22(金) 16:44:03ID:???
正統派な方法としてはコンポーネントじゃないの?
>>576でもいいけど、正統派じゃないでしょ。
0586nobodyさん2008/02/22(金) 18:13:20ID:???
Railsに移行したらいいのに
0587nobodyさん2008/02/22(金) 19:13:52ID:???
>>585
モデルでコンポーネントを使うという意味?
でも、フォルダからしてコンポーネントはコントロールの下にあるし、
なによりモデルでコンポーネントを使う方法が無いでしょ?
App::importで強制的に読み込むしかない。
0588nobodyさん2008/02/22(金) 19:14:27ID:???
>>586
railsが格安共有サーバーでも公式に動くようになったらねw
0589nobodyさん2008/02/23(土) 09:31:23ID:???
CakePHPは小規模向き、アソシエイト機能見て笑ったし
将来性無いなと判断する決め手になった
後はデータがオブジェクトじゃなくて配列処理してるとこね
これも、かなり小規模を前提として設計してるよね
0590nobodyさん2008/02/23(土) 09:40:42ID:???
ドキュメントの多さ大規模に向いてるsymfonyが
PHPフレームワーク主流になると思う
有名どころの大手ならCakePHPはいれない
これは断言できる、
少人数、小規模設計だから当然

半年くらいCakePHPでコーディングしてきたけど捨てるよ
CakePHP指定の案件が将来望めない
symfony案件が増加するのは間違いない

0591nobodyさん2008/02/23(土) 10:34:07ID:???
mozillaサイトにCakePHP!
http://cakephp.seesaa.net/article/31425210.html
0592nobodyさん2008/02/23(土) 13:14:45ID:???
>>589

だね

途中荒らしてるやついたが
なんであんなに必至なのかな

まあ初心者には簡単だしおすすめだけど
cakephpのサイト探すと穴空いたままで公開してるとこ多いな
0593nobodyさん2008/02/23(土) 14:17:27ID:???
急にアレな人が増えたな
0594nobodyさん2008/02/23(土) 14:20:55ID:???
>>593
仕方ないよ。穴がすきなんでしょw
0595nobodyさん2008/02/23(土) 14:22:47ID:???
俺用メモ

$db =& ConnectionManager::getDataSource('default');
$db->query('select * from table', false); ←二つ目の引数はキャッシュを使わないという意味
0596nobodyさん2008/02/23(土) 16:47:47ID:???
そもそも現時点で大規模で高負荷なサイト向きだと思っていた人がいるの?
そりゃ単に調査不足だろ
0597nobodyさん2008/02/23(土) 21:18:01ID:???
メソッド内で global $hoge ; とかしても null なのですが・・・
何かやり方間違ってますか?

例えば
配列を書いたファイル:data.php
<?php
$hoge = array( "a", "b", "c" ) ;

コントローラ:users_controller.php
<?php
include_once( "data.php" ) ;
class UsersController extends AppController
{
var $name = "Users" ;
var $uses = array( "User" ) ;

function index()
{
global $hoge ;
var_dump( $hoge ) ;
}
}
0598nobodyさん2008/02/23(土) 22:31:22ID:???
CakePHPは小規模でもかなりの小規模
たとえるなら、携帯の掲示板レベル
0599nobodyさん2008/02/23(土) 22:33:28ID:???
1年後にはレンサバ環境もPHP5が標準になるだろうから
そうなればsymfonyが敵なし状態だろうな
0600nobodyさん2008/02/23(土) 23:06:46ID:???
分かったけどここってcakephpのスレだよ?
0601nobodyさん2008/02/24(日) 14:48:47ID:???
使いたくないヤツは使わなければいい。それだけ。
チンポニーでも禅度でも好きなの使え。
0602nobodyさん2008/02/24(日) 21:59:28ID:???
cakephp v2はphp5&6専用になるよ

0603nobodyさん2008/02/24(日) 23:00:15ID:???
それは困るよかがみん(笑)
0604nobodyさん2008/02/25(月) 04:09:58ID:???
cakeの1.2でrestを実装したいんだけど
xmlの処理ってどこで実装するのが良いの?
viewにべた書きは嫌なんだけど
0605nobodyさん2008/02/25(月) 11:49:58ID:???
じゃあモデルで。
0606nobodyさん2008/02/25(月) 17:42:18ID:6F5pnXqd
cakeで自分の考えたクラス構造を実装するのはコンポーネントを使えばいいんですか?
MVCの奥でデザインパターンみたいな構造にしたいんですけど。
0607nobodyさん2008/02/25(月) 20:05:46ID:???
どのパターンかによるだろう
0608nobodyさん2008/02/25(月) 20:18:02ID:???
フォームからGETでデータを送りたいのですが、URLに「?」や「フィールド名」が付きます。

URL/データ/データ

このような感じでデータだけを送ることはできませんか?

0609nobodyさん2008/02/25(月) 22:41:02ID:???
>>608
俺はGETがきたら、名前つき引数形式のURLに変換して
リダイレクトをするコンポーネントを作った。
0610nobodyさん2008/02/25(月) 23:59:12ID:???
>>608
onsubmitでJavaScriptを呼び出してフォームのURLを動的に作成したらいいんじゃない?
0611nobodyさん2008/02/26(火) 00:24:55ID:???
>>609
>>610

アドバイスありがとうございます。

http://hogehoge/sales/1

というページから、

http://hogehoge/sales/1/2008/02

みたいにフォームを利用してさらに期間を絞り込むようなことをやりたかったのですが、
結局新しい別のビューでやることにしました。
0612nobodyさん2008/02/26(火) 12:54:22ID:???
俺俺クラスってどこに入れれば良いの?
vendor?
0613nobodyさん2008/02/27(水) 10:41:56ID:pFPJf0/n
コントローラからビューにパラメータをわたすにはどうすればいいのでしょうか?
0614nobodyさん2008/02/27(水) 12:51:45ID:???
モデルのreadとfind系(findById等)の違い。

$model->readを実行すると、$model->data に読み込んだデータが入る。

$model->findByIdだと$model->dataの値はそのまま。

確認したし、多分あっていると思うが、
これの違いを明確に書いてあるところあるかな?
0615nobodyさん2008/02/27(水) 13:12:36ID:???
>>613
1.2しか知らないけど
controller
$this->set('hoge','aiueo');

view
echo $hoge;
0616nobodyさん2008/02/27(水) 13:30:21ID:pFPJf0/n
>>615
すいません。間違えました。

コントローラからヘルパーにパラメータをわたす方法でした。
0617nobodyさん2008/02/27(水) 15:08:46ID:???
readで二つ目の引数指定してやると$model->idも入る
ソース見たまんまだけど
0618nobodyさん2008/02/27(水) 16:57:50ID:???
>>616
ヘルパーって要はviewじゃないの?
0619nobodyさん2008/02/27(水) 17:06:01ID:???
>>618
違うよ。ぜんぜん違うよ。
0620nobodyさん2008/02/27(水) 17:54:15ID:???
618の意見に賛成。

ヘルパー
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:???
$controller->set('settei', $settei);
ってビューに渡しておいてビューの頭で
$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を使用してる人ってどのくらいいますか?また
それぞれの印象を聞いてみたいです。

俺もCakePHPを使い始めた当初からSmartyを使ってきてる一人なのですが、なんだか
実は結構めんどくさかったりする割に従来のPHP記述でのビューに比べてあんまり
パフォーマンス良くない気がしてきたもので。(例えば、ヘルパーに配列を渡す場合
Smartyでのビューだと細々とめんどくさかったり)
0625nobodyさん2008/02/27(水) 20:29:10ID:???
smarty使うならpear使っておれおれフレームワークでよいじゃん
0626nobodyさん2008/02/27(水) 21:24:24ID:WlN8JrV2
>>625
なに?おれおれフレームワークって?
知り合いがZend FrameworkのMVC(この場合はV)をCakeで使ってたけど、あれは意味ねえなあ

0627nobodyさん2008/02/27(水) 21:25:22ID:pFPJf0/n
つっこみなしか。さびしいなぁw

家に帰るので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:???
hasManyとかbelongsToとかmodelにいれとくと
$model->findAll()するとき、有無を言わさずjoinしてるみたいなんだけど
これってなんとかならんのかね。

railsだとfind(:all,:include = ...)で指定したときだけjoinとかするじゃん。
0630nobodyさん2008/02/28(木) 09:05:16ID:???
>>629
常識です。
なんとかなりますので、ぐぐってください。
0631nobodyさん2008/02/28(木) 14:04:49ID:???
>>629
>>519

0632nobodyさん2008/02/28(木) 15:35:27ID:???
Model::recursiveって1行で書けよ。
0633nobodyさん2008/02/28(木) 17:41:50ID:???
>>632 それだけじゃないけどね
0634nobodyさん2008/02/28(木) 20:45:21ID:???
つ unbindModel
0635nobodyさん2008/02/29(金) 08:40:00ID:???
将来性のないフレームワークをブームということで一生懸命に習得してるやつwwww
時間の無駄やろ。



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:???
CakePHPは今年で無くなるであろう
小規模フレームワークは乱立しやすく
次から次へと良いフレームワークが出来る
大規模フレームワークはやはり規模がでかいから
乱立しにくい
どうせなら覚える量は少ない方がいい
そう賢い人間の選ぶ答えはsymfony
0641nobodyさん2008/02/29(金) 09:26:48ID:???
ここでいう覚える量というのは
フレームワークの数分という意味だからね
0642nobodyさん2008/02/29(金) 09:29:16ID:???
以前は活気のあったmojaviスレが廃れてるのを見れば
CakePHPも同じ道に行くのはわかるだろう
小規模フレームワークの世代交代は1年単位なんだよね
0643nobodyさん2008/02/29(金) 09:32:31ID:???
データ渡しがオブジェクトじゃないのがなあ
簡単な掲示板レベルのものしか作れないね
だから今後も有名どころのCakePHP採用実績はありえないよね
だから廃れるのも速い、その理由からも今年で終わりクセー
0644nobodyさん2008/02/29(金) 09:35:28ID:???
http://d.hatena.ne.jp/ichii386/20080221/1203527524
> firefoxのアドオンがおいてある、あのサイトが実はCakePHPで作られていたんだそうです。
0645nobodyさん2008/02/29(金) 09:40:00ID:???
>>642
以前は活気のあったmojaviスレが廃れてるのを見れば
お前の好きなフレームワークも同じ道に行くのはわかるだろう w
0646nobodyさん2008/02/29(金) 09:50:18ID:???
所詮 アマチュア向け

アマチュアも使えるきちんとしたFWなら生き延びるだろうけど・・・

CIに期待
0647nobodyさん2008/02/29(金) 10:14:57ID:???
CakePHPて小規模なクセに柔軟性がないよなwww
Viewでヘルパーのコンポーネントの呼び出し宣言出来ないとか
Viewで直接モデルをコントロール出来ないとかね
0648nobodyさん2008/02/29(金) 10:21:05ID:???
単純なロジックはincludeで呼び出し
複雑なロジックはコンポーネント化して呼び出し
複雑なロジックでかつ断片性が内容によってかわるならCakePHPはどうすんの?
0649nobodyさん2008/02/29(金) 11:20:41ID:???
symfonyのスロット機能には驚いた
なに、この便利な機能
CakePHP利用してからsymfony使うと
豊富な便利機能にただただ関心
0650nobodyさん2008/02/29(金) 11:22:31ID:???
ドキュメントもいい加減だし手抜きフレームワークだよね
作者やる気がないから将来性もクソもないがね
やる気のない社長がいる会社の株を買ってるのと同じだね
0651nobodyさん2008/02/29(金) 11:23:29ID:???
作者の気まぐれで
いつ開発中止するかわからんフレームワークをよく使えるなwww
0652nobodyさん2008/02/29(金) 11:24:22ID:???
symfonyは流行らないだろうな

アマチュアには敷居高いからね

流行らなければ廃れていくのは同じ
0653nobodyさん2008/02/29(金) 11:43:03ID:???
長い目で見れば、流行だけで中身の薄いものは確実に消える
フレームワークを次々乗り換えるんじゃなくて
期間的に長く使えるフレームワークしかいらない、
一見、CakePHPは効率よく見えるが
過去資産になりにくい時間の使い方は、非効率

0654nobodyさん2008/02/29(金) 11:50:01ID:???
0から小規模システムを作るならCakePHPが速いけど
0から作る案件はかなり少ない
スパゲッティソースでも
今までの過去資産をカスタマイズする方が圧倒的に速い
0655nobodyさん2008/02/29(金) 12:45:25ID:???
ねぇ、なんで最近symfonyの布教活発なの?
0656nobodyさん2008/02/29(金) 14:26:26ID:???
CakePHPより優れたフレームワークたくさんある
ただ知名度が優先して使ってる人が多くなってるだけ
0657nobodyさん2008/02/29(金) 14:31:12ID:???
初心者では扱いにくい難易度の高い
フレームワークが主流にならないと
初心者がフレームワーク出来ますとか
調子いい事を言うからな
初心者と経験者の差をはっきりさせて
初心者がすぐに食える状態を無くして欲しい
0658nobodyさん2008/02/29(金) 14:32:41ID:???
初心者向きの低フレームワークがCakePHP
高級志向の大人のフレームワークがsymfony
0659nobodyさん2008/02/29(金) 14:46:43ID:???
自分のスレいってやれよw
さびれてんだからさwww

13: フランチョスとsymfony (36) 
http://pc11.2ch.net/test/read.cgi/php/1201177567/l50
0660nobodyさん2008/02/29(金) 14:51:07ID:???
【徹底攻略を】symfony【徹底攻略】 (13)
http://pc11.2ch.net/test/read.cgi/php/1204113475/l50

一時期 symfony か CakePHP かって時期あったけど
これほどにまでsymfony 廃れてるとは知らんかった。

まあ、どうでもいいけど。
0661nobodyさん2008/02/29(金) 14:51:22ID:???
>>653
> 長い目で見れば、流行だけで中身の薄いものは確実に消える

それ具体的に何年後?

そりゃいつかは何もかも消えるだろうなw

そのときに、ほら消えた。俺の言っていたことは正しかったんだ。と
言えない様に、今何年後に消えるのか言ってもらおうか。

それまでに消えなければ、お前の言っていることは間違いだとはっきりする。
そのとき俺がおまえのことを思い出すことは無いだろうが、
少なくともおまえ自身は、自分の予測が外れたことを身にしみて感じるだろうw
0662nobodyさん2008/02/29(金) 14:59:47ID:???
縦読時「そ」が多い
0663nobodyさん2008/02/29(金) 20:34:53ID:???
その線でいくとPHPはどうなるぽ
0664nobodyさん2008/02/29(金) 23:39:58ID:???
すべてのページで使うような変数をまとめたファイルってどこでインクルードさせたらいいの?

core.phpに書いてるんだけど、これで問題ないですか?
0665nobodyさん2008/03/01(土) 00:37:40ID:???
俺なら、app/bootstrap.phpに書くかな。
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値を入れるやつも
あった気がしますが、汎用的な方法としてやりたいな。
■ このスレッドは過去ログ倉庫に格納されています