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

【PHP】フレームワーク CakePHP 12ホール目【笑】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/07/01(金) 16:33:46.28ID:???
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja

前スレ
【PHP】フレームワーク CakePHP 11ホール目【v1.3】
http://hibari.2ch.net/test/read.cgi/php/1297860755/
0176nobodyさん2011/08/01(月) 18:37:18.95ID:???
>>172
ここに書いたということはcakePHPが原因だったの?
0177nobodyさん2011/08/01(月) 19:40:28.61ID:???
>>173
VPSはセキュリティとかがめんどくさいし、
値段対スペックもそれほどよくないんじゃないかな

>>174
スタンダードです

>>175,176
ユーザーが増えたのもあるけど、
やっぱプログラムもあると思う
キャッシュ機構使ってないからな
0178nobodyさん2011/08/01(月) 20:43:41.20ID:???
単にリクエスト数が増えたのが原因ならプログラム見なおせっていう言い方はされないんじゃないかな。
掲示板でそんな重い処理をしてるとも思えないから、インデックスがあたってないとか
slow quelyが多すぎるってことなんじゃないだろうか。
0179nobodyさん2011/08/01(月) 20:45:09.69ID:???
>>177
いや、俺が実際、あんたと同じような状況で
さくらレン鯖→さくらVPSに乗り換えてるから。
鯖のパフォーマンスは全く違うよ。値段も月980円だし。
ま、スタンダードプランと比べたら高いけどw
0180nobodyさん2011/08/01(月) 22:10:28.18ID:???
>>179
まじか
ビジネスにしたわ
VPSは他で使ってるけど、最初の設定が面倒
0181nobodyさん2011/08/01(月) 22:32:45.11ID:???
>>178
インデックスあたってないな
0182nobodyさん2011/08/02(火) 00:19:31.86ID:???
一概にDBとは限らないしslowqueryくらいは潰してるだろうから
まっとうにxhprofなんかでプロファイリングするのが一番だよ。
0183nobodyさん2011/08/02(火) 11:36:16.76ID:???
いや、俺は単にサーバの問題だと思うけどね
0184nobodyさん2011/08/02(火) 11:51:24.22ID:???
さくらのレン鯖のDBはゴミなんでしょ?
0185nobodyさん2011/08/02(火) 13:28:29.78ID:???
そうだよ
0186nobodyさん2011/08/02(火) 15:47:43.26ID:???
なぜ?
0187nobodyさん2011/08/03(水) 10:09:50.16ID:???
さくらレン鯖DBは容量無制限だからバイナリ置きまくり
0188nobodyさん2011/08/03(水) 10:25:33.37ID:???
InnoDB使えないのが痛い。
それだけでVPSという選択肢になる。
0189nobodyさん2011/08/03(水) 16:21:43.62ID:???
ビューキャッシュの考え方について質問です。

例えば野球の選手データのように、毎日内容が変わるものがあるとします。
新しいデータを入れたらキャッシュを削除して再キャッシュすると思うのですが、
選手データのような、種類が多くて大量データの場合もそう言う考え方なのでしょうか?
0190nobodyさん2011/08/03(水) 19:34:15.66ID:???
オイラ、野球ぜんぜん見てないから選手データというのが毎日変わるというのは知らなかったんだけどさ、アクセスされるたびに更新するもんじゃなくて、1日ごとに更新する、でいいんじゃね?

というか、そういう更新するとこって、最終更新日とかタイムスタンプついてるところもある気がする。
0191nobodyさん2011/08/03(水) 20:10:36.86ID:???
野球の選手データなら、試合をして結果が出たとき以外には変わらないだろうし、
試合があったらその都度、攻撃とか守備とかのデータを追加して、選手ページのキャッシュ更新すればいいんじゃね?
俺も野球見ないからこんな仕様でいいのか自信ないけど
0192nobodyさん2011/08/03(水) 21:49:09.98ID:???
野球の選手データはあくまで例題なんですが、
そういう頻繁に更新するキャッシュ管理はどうするのかな?と思いまして。

毎日、何百のデータを一括削除してまたキャッシュし直すって
動作的にどうなのかな?と。そう言う疑問があります。
0193nobodyさん2011/08/03(水) 22:57:53.89ID:???
>毎日、何百のデータを一括削除してまたキャッシュし直すって
それはバッチ処理。そういうのをする場合もあるが、普通のwebアプリで普通にCakePHPのキャッシュというと、アクセスしたらキャッシュするだけであって、何日も更新されない(アクセス来ないからそのまま)データもあれば、頻繁にキャッシュ更新される場合だってあるよ。

そこらへんのバランスとかどの方法がいいか?とかは一概に言えなくて、あくまでその部分を作る奴のバランス感覚とかセンスの問題だな
0194nobodyさん2011/08/03(水) 23:19:41.19ID:???
>CakePHPのキャッシュというと、アクセスしたらキャッシュするだけであって、
>何日も更新されない(アクセス来ないからそのまま)データもあれば、頻繁にキャッシュ更新される場合だってあるよ。

これで納得しました。キャッシュってそういうもんなんですね。
例えバッチ処理であれ、大量のファイルを削除→再キャッシュすれば
時間がかかるだろうから、どうするのかな?って疑問に思っていたんです。

誰もアクセスしないファイルはそのままですか。納得です。
0195nobodyさん2011/08/03(水) 23:24:31.18ID:???
最近、CakePHPはじめた者です。
hasManyとか定義するとfindしたら強制的に関連テーブルひっぱってくるSQLが走りますよね。
パフォーマンス上げるためにunbindModelってするのが1つの方法だけど、
・hasManyの定義がたくさんあったら、1つ1つunbindModelするのもしんどい。
・そもそも何かのテーブルに1つhasMany追加したら、findしてる既存のコード全部に影響が出る。
ちょっとありえないかなと・・・

そこで自分のアプローチとしては、以下のようにしようかと思います。
・hasManyとかは一切定義しない
・bindModelTable1()みたいなfunction定義
・その中で動的にhasManyを定義
・findを呼ぶ前に関連テーブルをひっぱってきたいときだけ、bindModel*()を呼ぶ
これ以外に良い方法ありますかね。
0196nobodyさん2011/08/03(水) 23:27:59.85ID:???
>>195
hasManyしないモデルを作る、ってのは?
別にテーブル名以外のモデルも作れるんだし。
0197nobodyさん2011/08/03(水) 23:34:59.10ID:???
>>196
うーん。たとえば、
・Model1にhasManyが10個定義されている
・Model2はhasManyを何も定義しない
・両方共同じテーブルを扱う
としますよね。
そうすると、hasManyのうち1つだけとか2つだけとかしたい時に、やっぱり面倒かなって。
みんなどうしてるのかな。
必要なときに必要なものだけひっぱるのがいいとおもうのだけど。

Railsはfind(:all, :include => [reviews, users])
みたいに必要なときに必要なものをって設計になってますよね。
ちょっとCakeの設計は解せないです・・・
0198nobodyさん2011/08/03(水) 23:44:05.24ID:???
>・Model1にhasManyが10個定義されている

この時点で設計が間違ってる。

みんなどうしてるのかな → 設計を見直してる
0199nobodyさん2011/08/03(水) 23:52:35.69ID:???
>>195
本質的にhasManyって、用途によって切り替えるものじゃないと思う。
モデルって普遍的なものだから、もしも本当に切り替えが必要なのだとすると、
そもそもそのモデルに定義しているリレーション自体が適当なのか?ということも検討しないと。
0200nobodyさん2011/08/04(木) 01:12:45.98ID:???
Containableで絞り込めばいいんじゃないの
0201nobodyさん2011/08/04(木) 02:51:02.47ID:???
10個は物のたとえです。hasMany,hasOneとかあわせて5くらいは可能性としてありますよね?
みんな必要なくてもhasManyとかでひっぱってくるがままにやってるのかな。
パフォーマンスとか気にし過ぎなのだろうか。

気になるのはモデルにhasManyを1つ追加しただけで、
既存のfind呼び出しの挙動が変わる可能性があるということ。
本番運用してると結構怖い気がするのだけど・・・
0202nobodyさん2011/08/04(木) 11:13:12.20ID:???
recursiveで対応できるところはして
できないところはbindModel, unbindModelかな。
それでもだめなときは、joins使うな。おいらなら。
0203nobodyさん2011/08/04(木) 11:53:06.11ID:???
いやだから>>200 の言う通りだろ
02041952011/08/04(木) 14:53:18.58ID:???
>>200 >>203
おお、こんな機能がありましたか。すみません。解決です。
0205nobodyさん2011/08/05(金) 12:21:21.48ID:???
俺はパフォーマンスを気にするなら、hasManyを一切使わないで開発してる
必要な時のみ自分でJOINする
結局手間暇考える時間トータルでこれは一番効率良かった
0206nobodyさん2011/08/05(金) 13:41:03.54ID:???
秀和システムの本を丸移ししてるのですが、エラーが出ます。
Call to a member function event() on a non-object
どこがおかしいのでしょうか。

<?php echo $html->script('prototype',array('inline'=>false)); ?>
<?php
$script =<<< EOL
function testFunc(str){
alert("you clicked \""+str+"\"!");
}
EOL;

echo $html->scriptBlock($script,array('inline'=>false));

echo $html->div(null,'Event Test!',
array('id'=>'click_div','style'=>
'background-color:#aaffaa'));

echo $javascript->event('click_div','click',
'testFunc("click_div")',array('inline'=>true));
?>
0207nobodyさん2011/08/05(金) 14:13:35.15ID:???
>>206
まずエラーメッセージを読もう。
「メンバ関数event()とか呼べねえよ」

関数event()が無いの?
スペルミスで呼び出せない?
それともオブジェクト(のインスタンス)が無いの?

というように調べて行って下さい。
ここまではPHPの基礎的な事。

じゃあ、この場面でオブジェクトを使えるようにするのはどうするの?
てのがcakePHPの話。

せっかくの夏休みだからちょっと考えてみて。
0208nobodyさん2011/08/06(土) 01:09:49.78ID:???
$script =<<< EOL
function testFunc(str){
alert("you clicked \""+str+"\"!");
}
EOL;

それより、このコーディング思想てどうなの?
0209nobodyさん2011/08/06(土) 02:23:15.19ID:???
$javascriptヘルパーの動作のお勉強ならいいんじゃないの?
つってももうdeprecatedだけど。
0210nobodyさん2011/08/09(火) 09:53:22.94ID:???
modelのsaveメソッドで保存した時、saveの戻り値の配列にinsertされたidを入れて欲しいんだけど・・・
ビヘイビアとかでやってくるのないかな。
0211nobodyさん2011/08/09(火) 10:51:41.99ID:???
こんな感じ?
動かしてないけど

function save($data = null, $validate = true, $fieldList = array()) {
if (parent::save($data, $validate, $fieldList)) {
return $this->id;
}
return false;
}
0212nobodyさん2011/08/09(火) 11:27:51.56ID:???
afterSave()で。Behaviorで。
<?php

class InsertIdBehavior extends ModelBeavior {

public function afterSave($model, created = false) {
if ($created) {
$model->data[$model->alias][$model->primaryKey] = $model->getInsertID();
}
}

}

これぐらい自作しなさいよ。
0213nobodyさん2011/08/09(火) 23:18:40.82ID:???
>>212
すみません・・・助かります。
まだソースハックしきれてなくて、そういう小回り聞いたコードが書けないので。
0214nobodyさん2011/08/12(金) 14:33:38.57ID:???
ビューの共通関数はヘルパー
コントローラの共通関数はコンポーネント
モデルの共通関数はビヘイビア

じゃあビューとコントローラとモデル全部共通で使いたい関数はどこに置けばおkですか?
0215nobodyさん2011/08/12(金) 15:39:39.53ID:???
>>214
オレオレならlib
他の誰かが作ったモノならvendors
0216nobodyさん2011/08/12(金) 17:56:38.23ID:???
それは正しい分け方なの?
0217nobodyさん2011/08/12(金) 18:21:11.35ID:???
>>215
app/libsはどういう使い方(クラスの名前・読み込み方法)するんですか?
0218nobodyさん2011/08/13(土) 00:03:29.33ID:???
>>215,216
マニュアルとか全然読まないの?
0219nobodyさん2011/08/13(土) 01:45:59.40ID:???
はい
0220nobodyさん2011/08/13(土) 13:46:17.52ID:???
はいじゃないが
0221nobodyさん2011/08/13(土) 13:56:23.30ID:???
       ____
    /      \
   /  ─    ─\
 /    ,(●) (●)、\   
 |       (__人__)    |    はい、マニュアルは全然読みません。
 \     ` ⌒´   /      わからないことは、もっぱら2ちゃんで聞きます。
,,.....イ.ヽヽ、___ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||

0222nobodyさん2011/08/13(土) 20:11:45.63ID:???
聞いてもいいけど、そういう人にシステムを触って欲しくない
0223nobodyさん2011/08/14(日) 03:29:42.89ID:???
そんな固い頭の奴にこそ触ってほしくねーわ。

マニュアル読んでなかったら「マニュアルに書いてるよ」
って言えば良いだけだろ。コミュ力0かよ
0224nobodyさん2011/08/14(日) 06:40:19.56ID:???
マニュアル読むより、他人に聞いた方が大抵効率が良い
仕事は効率良くやるべきもの
0225nobodyさん2011/08/14(日) 08:17:24.45ID:???
*聞かれた方の効率は含みません
0226nobodyさん2011/08/14(日) 10:03:58.34ID:???
>224
そんなこたぁないぜ。
基本が出来てないと、同じようなことを何度も聞く事になる。

仕事を頼んでる方からすると、同じような事を何度もお願いしてるのに、その度に同じことを掲示板で聞いてるような奴には頼みたくないと思うが。
0227nobodyさん2011/08/14(日) 13:25:29.62ID:???
>>225-226
お前、会社で部下を持った事無いだろ?
それは単にお前が「教えてるだけ」だからだ。
だから教えられた方も身になってないし、自分も何も得られない。

普通、何度も同じ質問してこないような教え方をするし、
質問してきたという事はその事が「わかりづらい・難しい」わけだから、
どうやって伝えたら相手は理解するのか?という自分自身の勉強にも成り。
仕事でやってるならお客さんに対する説明の時とかな。

そこまで考えずに単に「教えてるだけ」なら、お互い何も得る物ねーわ
0228nobodyさん2011/08/14(日) 13:28:16.97ID:???
2ちゃんでも度々スレ立てた奴がテンプレ修正してるだろ?
そいつは同じ質問されるのが面倒だという思いもあるだろうが、
スレを始めて見た人にわかりやすく解説するためにそうしてるんだろ。

それでも質問してくる奴がいるのは確かだが、
その時は、「>>1に書いてるよ」とひと言いえば良いだけ。
それがコミュニケーションだろ。>>226みたいなのは自分よがりすぎる。
0229nobodyさん2011/08/14(日) 13:41:30.80ID:???
なんだこいつら
02302252011/08/14(日) 13:50:36.60ID:???
マニュアルに書いてあることなのに読まず、人に質問して教えてもらったほうが効率がいいってこと・・・?
よくわからんな・・・
0231nobodyさん2011/08/14(日) 14:01:53.48ID:???
>>その時は、「>>1に書いてるよ」とひと言いえば良いだけ。
つまり、「マニュアルに書いてあるよ」とひと言いえば言いだけか。
0232nobodyさん2011/08/14(日) 17:19:29.07ID:???
>>230
お前何で「マニュアルに書いてる」って前提で話してるんだ?
それはお前が書いてるのを知ってるからわかるわけで、
それを知らない奴にとっては、書かれている事はわからないだろ。

で、マニュアルに書いてないと思った・あるいは見てないから質問するわけで、
だったら「マニュアルに書いてるよ」と、ひと言いえば済むだけ。
何をそんな疑問に思うか全く分からん。
0233nobodyさん2011/08/14(日) 17:35:54.78ID:???
>>232
じゃぁ、お前はなんで「>>1に書いてある」って前提で話してるんだ?
それはお前が書いてるのを知ってるからわかるわけで、
それを知らない奴にとっては、書かれている事はわからないだろ。

で、>>1に書いてないと思った・あるいは見てないから質問するわけで、
だったら「>>1に書いてるよ」と、ひと言いえば済むだけ。
何をそんな疑問に思うか全く分からん。
0234nobodyさん2011/08/14(日) 17:45:10.43ID:???
たいそうなもんでもないし先にCookbookぐらいは読むもんだろ、こういうの。
FWの作法・流儀にそった実装をして、共通認識を崩さないよう開発をするもんでしょ。。
あと読み流すだけでいいからクラス一覧も。
元主は質問してくれたんだから俺的にはセーフです。
0235nobodyさん2011/08/14(日) 18:16:49.08ID:???
だから「こうしてるはず!」という固定概念を無くせよ
質問に分かる奴がいれば答えれば良いし、分からなければ無視しろ。
マニュアルや>>1にあるなら教えればいいし、そうじゃなければggrksでいい。
なにを数レスまでごちゃごちゃ言ってるか俺には理解できない
0236nobodyさん2011/08/14(日) 19:25:45.45ID:???
>>232
話の流れぐらいよんでくれよ
0237nobodyさん2011/08/15(月) 12:20:35.84ID:???
       ____
    /      \
   /  ─    ─\
 /    ,(●) (●)、\   
 |       (__人__)    |    仕事って教えてもらうものですよね。
 \     ` ⌒´   /      自分で勉強しろとか上司の役割果たして無いと思うんです。
,,.....イ.ヽヽ、___ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||

0238 ◆8.LPxIE7C6 2011/08/15(月) 21:42:14.44ID:???
すみません、フルボッコされるの承知でどうか
教えて下さい。

簡単なフォームを作って確認の上、DBに登録
させる仕組みを作ったのですが、layoutデータ
の画像がリンク切れを起こします。

フォームのあるviewフォルダの中には、index、
kakunin、touroku、kanryouの4つのファイルが
あり、controllerで毎回layoutを再読み込みする
のですが、layoutのデータがちゃんと適用
されるのがindexのみでした。

他のファイルは/〇〇/kakuninのようにルートが
変わってしまうので、Router::url()を使って
変更するのだろうと思い試してみたのですが
上手くいきません。

とりあえず、Routerクラスあたりをあたって
いますが、詳しい方、どうか、無知な私に
教えていただけないでしょうか?

cakephpは、1.3を使っております。

よろしくお願い致します。
0239nobodyさん2011/08/15(月) 21:47:16.16ID:???
>>238
HTMLヘルパー使っての話しか?試しに↓したらどうだ?
<img src="<?php echo Router::url('/img/test.jpg');?>" />
0240 ◆8.LPxIE7C6 2011/08/15(月) 22:22:06.68ID:???
>>239
今、試してみました!
出来ました!
有難うございます!
有難うございます!


今日一日、一体、何をやってたんだと情けない
ほど凹んでました。

本当に有難うございます!
リンクも同様に出来ました!

本当に、本当に、有難うございました!
0241nobodyさん2011/08/16(火) 00:21:57.18ID:???
まさか>>239で解決するとは思わなかったぜw
悩んだら何でも最小限にして試してみる事だよ。
どこが問題になっているか分かりやすいからな。
0242nobodyさん2011/08/18(木) 15:52:24.92ID:???
CakePHPのSessionおかしくないか?
ログインのフラグとして利用してるんだけど、すぐ切れる(無くなる)

core.phpの設定いじりまくってるが改善されん
0243nobodyさん2011/08/18(木) 18:30:10.59ID:???
Cakeのセッションはおかしいよ、昔から
知らないと使おうとしちゃうよね、結局皆自作してる
0244nobodyさん2011/08/18(木) 19:03:38.07ID:???
ローカルでのテスト環境は挙動が違うから、環境によって変わるのかな?
0245nobodyさん2011/08/18(木) 20:01:04.63ID:???
Sessionといえば、cookie_lifetimeも変だよね
ブラウザを閉じたら、セッションも切れて欲しい
0246nobodyさん2011/08/18(木) 21:23:39.00ID:???
クライアントのセッションIDが消えているのか
サーバのセッションデータが消えているのか切り分けないと。

たぶんサーバ側と思われ。
前スレだったかにもあったんじゃないかな。
http://pentan.info/php/session_gc.html
0247nobodyさん2011/08/22(月) 12:06:04.64ID:???
Smarty View Classが見つからないんで
誰かくれませんかね?
0248nobodyさん2011/08/22(月) 17:21:34.40ID:???
>>247
https://github.com/hidetora23/hg_smarty_for_cakephp
これが動くかも。
0249nobodyさん2011/08/22(月) 18:00:06.79ID:???
Smartyなんて使うなよ
0250nobodyさん2011/08/22(月) 18:23:05.36ID:???
Smartyはオワコン
0251nobodyさん2011/08/22(月) 18:33:38.79ID:???
HTMLコーダにPHP打たせたくない環境とかもあるのだよ。
0252nobodyさん2011/08/22(月) 18:46:11.57ID:???
そりゃそうだが、だから何だと言いたいんだ?
0253nobodyさん2011/08/22(月) 19:12:26.94ID:???
CakePHPのデフォルトのテンプレート機能だと、PHPで何でもかけてしまうけど、
Smartyだと禁止できる、というだけの話。
あと、これは自分の知識不足かもだけど、
CakePHPのデフォルトのテンプレートだと文字力出力すべてに
自動でHTMLエスケープとかできないような?
0254nobodyさん2011/08/22(月) 20:18:34.47ID:???
テンプレは他にもあるのになんでよりによってSmartyなのか
まあ有名だけど使う理由あるか?
02552532011/08/22(月) 20:28:19.32ID:???
>>254
その他のいいやつを是非教えて欲しい。
ちゃかしてるわけじゃなく。
0256nobodyさん2011/08/22(月) 20:55:58.11ID:???
<?php if($condition): ?>
<h1><?= $title ?></h1>
<?php endif; ?>

こういうテンプレートがある
0257nobodyさん2011/08/22(月) 21:31:07.23ID:???
>>256
フレームワークを使っているにもかかわらず
わざわざHTML内にPHPタグを書く面倒臭さを解消する程度の
知識も技術力もありませんっていう自己紹介ですか?w
0258nobodyさん2011/08/22(月) 21:41:09.85ID:???
一番有名なテンプレ使う

ってのも立派な採用理由だと思うが。
0259nobodyさん2011/08/22(月) 22:05:09.93ID:???
>>257
いや、PHP自体テンプレート言語だし、
新たに1つ別の仕様頭に入れる必要性を感じない
0260nobodyさん2011/08/22(月) 23:16:08.46ID:???
プログラマから見ればそれでいいんだろうが、コードを実行しないまま表示させようとするとデザインとか狂うし、Javascriptも確かめて見る事出来ないんよ
まぁ、JavascriptはSmarty使ったところで一緒だがな。

デザイナでも受け入れられるテンプレートっつーと、PHPTalとかKwartsくらいか。
プログラマの方が一歩譲ってデザイン分かるようにしとるんだから、デザイナの方もPHPくらい分かれよ、って話は無い事も無いとは思うが。
0261nobodyさん2011/08/23(火) 00:10:50.39ID:???
>>258
バカな理由にしか思えないが
0262nobodyさん2011/08/23(火) 00:30:20.72ID:???
なぜ?多数のレビュー受けてるって事だよ?
情報も多いし。
0263nobodyさん2011/08/23(火) 00:54:15.02ID:???
マジで言ってるの?
それはプラスだけど、決定的な理由にはならんだろ
0264nobodyさん2011/08/23(火) 00:55:46.48ID:???
いやそりゃちゃんと評価しなきゃいけないのは分かるけど
採用理由の一つにはなるだろ?ならない?
0265nobodyさん2011/08/23(火) 01:06:12.97ID:???
まあこれは何度も出ている話題だとは思うけど、
基本的にviwsの中身は触ってほしくないと思ってる。

単純に、例えば記事を$kiji配列でviewに渡して
viewの中で$kiji['tilte']とかを配置してく程度のお仕事ならいいけどさ。

cakeの機能を使えば使うほど、それだけでは無理が出てくる。
helperの仕様や中身まで熟知してもらわなきゃならなくなるからね。
0266nobodyさん2011/08/23(火) 05:48:58.87ID:???
マジレスすると、一番有名でも使いにくいからSmartyは使いたくない。
プログラマにもデザイナにも使いにくい。
重さは許容範囲なんだが…。
0267nobodyさん2011/08/23(火) 12:34:16.08ID:???
素のPHPにSmarty使うのは良いんだよ。
問題は、CakeにSMarty使う事だ。
Cakeのテンプレや書き方があるんだから。

だから、Cake採用しているシステムは
PG以外にテンプレ触らせないようにすればいい。
0268nobodyさん2011/08/23(火) 12:44:45.66ID:???
Cake + SmartyはCakeの良さもSmartyの良さも消しさってしまう恐ろしい組み合わせ
0269nobodyさん2011/08/23(火) 14:20:07.00ID:???
だ か ら 別のテンプレ使えば良いだろw
Smarty以外にもテンプレは沢山あるんだから。PHPにはすげえ沢山あるぞ。
何故か>>255なんかは知らないみたいだけど。
情弱にはなりたくないもんだな。

せっかくMVCと分けてんのに、Vをデザイナ(HTMLコーダー)に振れないって意味わかんないw
0270nobodyさん2011/08/23(火) 15:35:06.98ID:???
>>269
言ってることには同意なんだけど、
じゃあ実際に何を使ってるのか具体的に名前を上げて欲しい

確かに個人製作みたいなライブラリがPHPにはすげえ沢山あるけど、
そのうちのほとんどがクソ品質だと思うんだが、使えそうなものっていくつあるの?
0271nobodyさん2011/08/23(火) 16:03:36.46ID:???
>>270
俺はHTML_Template_Sigmaを使ってるよ。
これのいいところは形式がほぼhtmlそのままであること。
ブロックの指定は
<!-- BEGIN AAA_BLOCK -->
xxxxxx
<!-- END AAA_BLOCK -->
にようにコメントで行うので、そのままブラウザで開いても(PHPを実行しなくても)ある程度表示確認ができる。

変数には$がつかず、{hage}などと挿入するだけ。

複雑な関数はいくらでも自作でき、html内にfunc_xxxx(引数)
これでなんでもできる。

テンプレ内にPHPのコードが一切出てこないため、プログラマ以外でも編集しやすい。
パフォーマンスも悪くない(Smartyと同程度)のでオススメ。
0272nobodyさん2011/08/23(火) 18:26:21.68ID:???
HTML_Template_Sigmaって、PHP3時代のPHPLibについてきたテンプレートエンジンっぽい奴じゃなかったっけ?
ループがプログラム側に来ているのが気に入らんかったかな。

といってもまぁ、Smartyに慣れる前はSmartyのテンプレート側でループしちまうってのが気持ち悪かったもんだから、そこは慣れなんだろうな。
0273nobodyさん2011/08/24(水) 02:25:13.34ID:???
>>271
>パフォーマンスも悪くない(Smartyと同程度)のでオススメ。

ならSmartyで良いんじゃないか?

無名のテンプレなんてオレオレと変わらんだろ。
そもそもテンプレートエンジン使うのが
「他人がわかりやすく編集するため」なんだし。
0274nobodyさん2011/08/24(水) 14:36:43.09ID:???
このスレにはつい突っ込みたくなるアホが多いな。
Smartyが使いにくいから嫌だって言って、他のを進めてるんじゃないの。
なのに重さが同じならSmartyでいいじゃんってw
あとお前が知らなければ無名なのかwどうせ他に1つも知らないんだろ?
0275nobodyさん2011/08/24(水) 14:45:29.44ID:???
SmartyもSmarty以外も同じ。Cakeと合わせて使う価値なし。
■ このスレッドは過去ログ倉庫に格納されています