【PHP】フレームワーク CakePHP 4ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/06/20(金) 01:24:40ID:???10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
Cookbook :: 1.2 Collection :: マニュアル
http://book.cakephp.org/ja
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0521nobodyさん
2008/11/06(木) 21:38:37ID:???0522nobodyさん
2008/11/06(木) 21:39:33ID:???http://manual.cakephp.org/ja/view/32/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
駄目だとしても他の場所に作って移動すればいいのではないかと思うんだけど
それじゃ駄目なのかな?
まあ俺が>>513と同一人物と言うことは内緒だが
0523nobodyさん
2008/11/06(木) 22:00:26ID:???すみません、ちょっとおっしゃる内容が分かりません。
少し詳しく質問し直させてください。
例えば、こういう配置だとします。
cake
/usr/lib/cake(個々のユーザは読み取り権限しか持たない)
app
/home/user01/app
/home/user02/app
...
webroot
/home/user01/htdocs
/home/user02/htdocs
...
webrootには各人ごとにindex.phpを置いて、cakeとappの位置を指定します。
この場合、/usr/lib/cake/console に個々のユーザが移動して、./cake bake
を実行した場合、例えばModelのファイルはどこに生成されるのでしょうか?
おそらく /usr/lib/cake/app/models だと思うのですが、ここには一般ユーザ
の書き込み権限がないので、動作しません。
個々のユーザごとに、/home/user0X/app/modelsに出力するよう bakeは指定で
きるのでしょうか?
0524nobodyさん
2008/11/06(木) 22:01:50ID:???日本語のほうはURLが長いのでわずらわしいかと思いまして。
ひとつ前のレスに書きましたが、書き込み権限がない場合を想定しています。
0525nobodyさん
2008/11/06(木) 22:20:55ID:???質問させていただいたのに、非礼をお詫びいたします。
0526nobodyさん
2008/11/07(金) 01:23:09ID:???Bakeでapp一式を生成する話かと思ってたが、modelとかを作る場合の話ね。
cake bake -app <appフルパス>で指定できる
または、
/home/user01/appをカレントディレクトリとして、cake bakeを実行すればよい。
但し、/usr/lib/cake/consoleにはパスを通しておくこと。(ちと気持ち悪いが)
0527nobodyさん
2008/11/07(金) 10:47:32ID:???ありがとうございます!なるほど、コマンドラインオプションで指定するのか。
それにしてもbakeのドキュメントって見つからないと思ったら、
./cake bake help
こうすれば説明が読めることにやっと気づきました。
この説明以外にドキュメントがないというのが何ともですが。
後はソース読むしかないか。Railsもそうだったけど。
0528nobodyさん
2008/11/07(金) 13:57:45ID:???MySQLに画像は保存できるのですが、その画像をselectしてViewで表示するにはどうやればいいですか?
外部のPHPに記述して読み出すようにはあるのですが、cakePHPのViewから同様のことができません。
0529nobodyさん
2008/11/07(金) 14:03:58ID:???何をやって、どう駄目だったのか書いたほうがいい。
外部のPHPなら、Cakeのviewで普通に画像として呼び出せばいいんじゃないの?
0530nobodyさん
2008/11/07(金) 14:13:15ID:???$this->data['Event']['imagedata']にイメージのバイナリがセットされています。
echo $html->image($form->value('Event.imagedata'));
で表示させるとバイナリのまま表示されます。
それでimage.phpを作成して、header("Content-type:image/gif");を指定して
外部のPHPファイルで画像のバイナリを表示させようとしたのですが、
ビュー以下において単純な<img src="image.php">では呼び出せずにいます。
webroot以下やコントローラー以下にも配置したのですが同じでした。
ファイルの置き場所が悪いのでしょうか?
それとも簡単に出来る方法があればよろしくお願いします。
0531nobodyさん
2008/11/07(金) 14:51:26ID:???イメージのバイナリを画像表示用のviewに渡して、viewでheader吐けばいけそうだけど。
MVCの設計としてどうかは知らん
最終的には画像表示用のコントローラ作ればいいんじゃないかな
0532nobodyさん
2008/11/07(金) 14:55:58ID:???ビューでheaderをはきたいのですが他にもHTMLがありますので、画像の部分だけ「Content-type:image/gif」とかを指定したいのです・・・
0534nobodyさん
2008/11/07(金) 15:44:18ID:???メディアビューは初めて聞きます。
サンプルはバイナリファイルをダウンロードさせるようになっていますね。
画像の場合はどのようにすればいいのかまだ分かりません。
例えばMySQLから取得した画像のバイナリーデータを
SNSのプロフィール画像のように表示させたいのです。。。
0535nobodyさん
2008/11/07(金) 16:06:14ID:???>>532
そもそもHTMLと画像は別ファイルだよ。
外部のPHPファイルで画像表示に成功しているなら、viewに直接imgタグ書けばいいだけかと。
0536nobodyさん
2008/11/07(金) 16:12:29ID:???0537nobodyさん
2008/11/07(金) 16:12:54ID:???0538nobodyさん
2008/11/07(金) 16:37:20ID:???2.MySQLから取得した画像のバイナリをイメージで表示
3.HTMLを表示
上みたいな感じなので、2のパートだけをContent-type:image/jpegにしたいのですが
エレメントとかで分けてもheader("Content-type:image/jpeg");を記載したら
URLだけしか表示されないのです。
そのままだとバイナリデータが表示されます。。。
おとなしく画像をアップしてパス指定で管理するしかないのですかね。。。
0539nobodyさん
2008/11/07(金) 16:47:27ID:???http://q.hatena.ne.jp/1141838059
0541nobodyさん
2008/11/07(金) 17:40:49ID:???0543nobodyさん
2008/11/07(金) 18:13:58ID:???ご回答ありがとうございます。なかなか難しいのですね。
cakePHPでSNSのプロフィール画像を表示させたいイメージなのです。
ファイルをアップしてリンクのテキストで対応するのは出来るのですが、
バイナリーで保存してやりたいということです。
0545nobodyさん
2008/11/07(金) 19:05:29ID:???つまんねぇレスすんなハゲ
これは使えないかな?
サムネイルコンポーネント
http://www.hideblog.net/nikkis/show/16
もっとスマートにできるなら俺も知りたい。
0546nobodyさん
2008/11/07(金) 20:24:31ID:???文字データなら出来たけど。
0547nobodyさん
2008/11/07(金) 21:14:59ID:???0548nobodyさん
2008/11/07(金) 22:25:45ID:???コントローラのファイルを、種類によっていくつかのサブディレクトリに分け
て配置することは出来るのでしょうか?
app/controllers/hoge/hoge0_controller.php
app/controllers/hoge/hoge1_controller.php
app/controllers/fuga/fuga0_controller.php
app/controllers/fuga/fuga1_controller.php
このように複数のサブディレクトリを作り、その中にコントローラを分けて納
めるようなイメージです。
また出来るとしたら、それらのコントローラにはどのようなURLでアクセスでき
るのでしょうか?
0549nobodyさん
2008/11/07(金) 22:48:44ID:???http://book.cakephp.org/ja/view/48/CakePHP%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97
0550nobodyさん
2008/11/07(金) 23:08:49ID:???なるほど、ありがとうございます。bootstrap.phpの$controllerPathsですか。
CakePHPでコントローラーを複数のディレクトリに整理する方法 - yandodの日記
http://d.hatena.ne.jp/yandod/20080510/1210416583
> 分散したディレクトリ内でファイル名やクラス名が衝突すると面倒な事になる
> と思われますので接頭語を付けるなどして管理するのが良いかもしれません。
うーん。コントローラの名前空間は共通なのか。
URLのパス指定で、各ディレクトリを呼び分けるとか出来ないでしょうか?
0551nobodyさん
2008/11/07(金) 23:29:48ID:???0552nobodyさん
2008/11/07(金) 23:32:23ID:???そもそもmysqlは画像データを格納するために作っていないから
画像はフォルダに入れて管理した方がいいと
mysql作者が語ってるのに。
そんな自分もかけだしのときはmysqlに画像データ入れてました
管理は楽だけどね。かなりの負荷がかかる。
Bakeとか使う人も素人くさいと思う。
0554nobodyさん
2008/11/08(土) 00:12:16ID:???http://book.cakephp.org/ja/view/46/Routes%E3%81%AE%E8%A8%AD%E5%AE%9A
Routes追加すればURL上は階層化されてるように見せることは出来るが、名前の衝突は回避できない。
コントローラ名にパス名も入れればユニークになって衝突回避出来なくもないが、色々面倒なことになる。
0555nobodyさん
2008/11/08(土) 00:14:48ID:???使うのはスキーマ検証時くらいだけど。
0556nobodyさん
2008/11/08(土) 00:17:44ID:???0557nobodyさん
2008/11/08(土) 00:19:20ID:???case by caseだとおもうけど
DBでファイルのパス管理してたらそのファイルが消されてたりとか。
かといって参照頻度が高いときはDBに置きたくないしな
さすがにデザインとかで使うような画像は普通に置いとくけどさ
0558nobodyさん
2008/11/08(土) 01:37:22ID:???DBに入れておいて、参照されたらキャッシュを作り、そのキャッシュを送信するって方法もあるらしい。
2回目以降は早いし、ファイルが消えても問題ない。
0559nobodyさん
2008/11/08(土) 02:27:53ID:???0561nobodyさん
2008/11/08(土) 03:22:53ID:???0562nobodyさん
2008/11/08(土) 07:55:27ID:???画像もDBに格納して管理する −扱いがめんどうなLOB(ラージオブジェクト)は使わない方法も含め
http://neta.ywcafe.net/000774.html
0563nobodyさん
2008/11/08(土) 11:22:34ID:???mysqlは画像を格納するという目的で設計されてないからね
だから画像をDBに入れるのが悪いというのではなく
画像をmysqlに入れるということがナンセンス
0564nobodyさん
2008/11/08(土) 11:26:06ID:???画像格納させたいならoracleとかの方が合理的だと思うよ
0565nobodyさん
2008/11/08(土) 11:33:20ID:???DBと連携させて管理するのが面倒だけど、そこまで面倒な管理とも思えない
画像はデータの一つだからDB格納がよいという理念なら
htmlもcssも全部DBに入れよということになる
0566nobodyさん
2008/11/08(土) 11:38:58ID:???DBの持つ性能とバランスをどこまで考えてるの疑問に思う
0567nobodyさん
2008/11/08(土) 11:42:47ID:???0568nobodyさん
2008/11/08(土) 12:05:42ID:???通常の Web サーバセットアップを使用する場合は、画像をファイルとして格納する。
言い換えると、データベース内にはファイル参照のみを格納する。この主な理由は、
通常の Web サーバのほうがデータベースコンテンツと比較してファイルのキャッシュに優れているためである。
このため、ファイルを使用したほうがシステムの高速化を容易に図れる。
0569nobodyさん
2008/11/08(土) 12:09:44ID:???ザのデータを一括管理できるというメリットしか存在しないと思うけどな。
Railsのときはそうやってて、非常に便利だった。
0570nobodyさん
2008/11/08(土) 14:24:18ID:???> コントローラ名にパス名も入れればユニークになって衝突回避出来なくもないが、色々面倒なことになる。
了解です。ありがとうございます。
今回はbootstrap.phpの$controllerPathsでやって、名前の衝突についてはその
都度対処することにしようと思います。
0571nobodyさん
2008/11/08(土) 15:12:49ID:???B hasMany C
で
C belongsTo D
みたいなときのリレーションの貼り方が判らないんですが、
そもそも可能なんでしょうか?
(Aを基点にA〜Dのテーブルからデータを取ってくる想定)
SQL直書きでは勿論可能ですが。
0572nobodyさん
2008/11/08(土) 15:56:39ID:???そこまでしてリレーションに拘るのは返って
生産性を落とす可能性があるから
要はバランスですね
どこからSQLl直書きにするかの線引きはね
0573nobodyさん
2008/11/08(土) 16:42:40ID:???アクセス頻度やキャシュの実装、使い方や状況によって向いてる場合もあろう。
0574nobodyさん
2008/11/08(土) 17:08:34ID:???簡単に出来るのなら採用したかったのですが・・・
0575nobodyさん
2008/11/08(土) 18:47:57ID:???履歴書の写真とか。
0576nobodyさん
2008/11/08(土) 18:54:20ID:???置くわけでは無いと思うが。
認証チェック経由でファイルを返すのが普通でしょ。
0577nobodyさん
2008/11/08(土) 19:06:19ID:???0578nobodyさん
2008/11/08(土) 19:11:50ID:???ファイルパスのみDBに突っ込んで画像はファイルシステムから読み出すようにすりゃ良いんじゃないの?
画像データそのものをDBに突っ込む必要があるとしたら、
バイナリデータで検索する場合しかなくない?
0579578
2008/11/08(土) 19:15:44ID:???例えばDBだとデータをまとめて暗号化するようなソリューションがある場合があるが
ファイルシステムに保存するとそういう枠組みから漏れてしまう
まあファイルシステムドライバで暗号化すれば良いだけなんだけど
ドライバ方式とDB方式の差異はパフォーマンスくらいか
それも特定ディレクトリだけ暗号化するようにすれば良いだけか
0580nobodyさん
2008/11/08(土) 19:26:04ID:???// 何かしらの認証チェック...
header("Content-type: ...");
...
readfile( 直接ブラウズできないパスの画像ファイル );
?>
な処理をimgのsrcに指定。
0581nobodyさん
2008/11/08(土) 19:32:38ID:???php⇔hdd間での画像データのやり取りをどうするかって事だよね
0583nobodyさん
2008/11/09(日) 06:03:18ID:???同じくらい面倒だ、DB画像管理が最高に楽じゃない限り
パフォーマンスのいいファイルシステムになる
0584nobodyさん
2008/11/09(日) 06:10:19ID:???0586nobodyさん
2008/11/09(日) 13:38:34ID:???> 画像はデータの一つだからDB格納がよいという理念なら
> htmlもcssも全部DBに入れよということになる
画像はM
htmlやcssはV
DBには入れませんが。。。
0587nobodyさん
2008/11/09(日) 13:55:11ID:???リリース時で固定)は別物だと思うが。
前者をDBで一元管理できると便利だよ。
まあ抵抗のある人に無理強いするつもりはないし、個々人の自由だと思うけど。
自分はCakePHPでもこれがやれるならやりたいなあ。
何とか実現できないものか。
0588nobodyさん
2008/11/09(日) 14:11:02ID:???条件があえば、DB管理で一元管理でも良いと思う。
この辺を思い出した。
ttp://neta.ywcafe.net/000774.html
ttp://blog.livedoor.jp/techblog/archives/64648176.html
0589nobodyさん
2008/11/09(日) 15:42:14ID:???0590nobodyさん
2008/11/09(日) 15:47:24ID:???ページ上に表示されるような画像はVだよ
そしてページ上に表示されない画像ならWEBシステムの中に入れておくべきものじゃない
画像でありながらMになりうるのは、画像検索システムのようなものだけ
0591nobodyさん
2008/11/09(日) 15:48:39ID:???それをWEB上からログインして観覧するようなシステムがあるならV
一切使い道が無いならWEBシステム外で保管しておくべきもの
無いと思うけどその画像で画像検索するならM
0592nobodyさん
2008/11/09(日) 23:20:30ID:???検索対象じゃないとMになれないの?
↓そう読み取れなかったが
http://ja.wikipedia.org/wiki/Model_View_Controller
0593nobodyさん
2008/11/09(日) 23:25:24ID:???要件次第だと思うよ。
0594nobodyさん
2008/11/11(火) 09:18:04ID:???ファイルをバイナリーデータに変えたものがMである
0596nobodyさん
2008/11/11(火) 11:39:47ID:???Vはデータを表示する仕組み
Cはデータを操作する仕組み
画像はデータなのでそのどれでもないと思うが
0597nobodyさん
2008/11/11(火) 11:48:43ID:???辞書には
> あつか・う〔あつかふ〕【扱う】
> 道具・機械などを、使ったり操作したりする。取り扱う。
ってあったっす
0598nobodyさん
2008/11/11(火) 12:46:42ID:???Mはデータの出し入れや変換、型決めなど広範囲に扱える
0599nobodyさん
2008/11/11(火) 18:28:03ID:???0600nobodyさん
2008/11/11(火) 18:41:57ID:???0601nobodyさん
2008/11/12(水) 01:29:19ID:???コントローラはモデルで引っ張ったデータをチェックしてビューに渡すだけだな
0602nobodyさん
2008/11/12(水) 09:05:32ID:???モデルに書くと生産性が落ちる
なぜなら
再利用できるように関数化させるのが手間
再利用が2回程度ならコントローラ上でコピペが最短
0603nobodyさん
2008/11/12(水) 09:12:09ID:???総体的にコード量が多くなる。
なぜなら
symfonyのように
MとVのやりとりが直接出来ないから
Cに橋渡し的なコードを書かないといけない分
コード量が増える
symfonyのうような仕様なら
モデルをどんどん厚くすべきだが
CakePHPの場合は
モデルを厚くしすぎるのも
作業効率が落ちると思う
0604nobodyさん
2008/11/12(水) 17:43:12ID:???ここ見るとfind系が全部find()に統合されたって書いてあるけど、
findAllByって使っちゃっていいの?
特に非推奨とは書いてないけど。
findByとfindAllByだと配列で条件指定する新しい形式が使えなくて
nullを並べる旧形式のままだから、条件指定方法が統一できなくて
ちょっと気持ち悪いんだけど…
新形式の条件指定に対応しないってことは、そのうちマジックメソッド自体が
消える予定なのかな。
調べてみたけど、日本語だとこれくらいしか記事がない
http://d.hatena.ne.jp/ichiichinini/20081104/1225832073
0605nobodyさん
2008/11/12(水) 17:55:00ID:???0606nobodyさん
2008/11/12(水) 20:14:45ID:???find系てfind()でほとんど出来ると思うので
最初から意味の無さそうな機能だなとは思ってた
したがってfind()で統一してる人ばかりだと思うんで
どうでもいいよ
0607nobodyさん
2008/11/12(水) 20:23:16ID:???可読性とコーディング量は改善されるけど。
いつも使わない関数だとすれば、単なる無駄
0608nobodyさん
2008/11/12(水) 20:32:06ID:???データのやりとりが配列思考なところなんだよね
というのはphp自体が壊れたオブジェクト指向だから
配列思考型のフレームワークはphpにはピッタリだと思う。
あと配列思考型は中小規模にも適してる
CakePHP自体が中小規模を対象として設計されてると思う
rubyは完成されたオブジェクト指向言語だから
rorのようなオブジェクト指向型でのデータのやりとりがマッチする
0609nobodyさん
2008/11/12(水) 20:36:33ID:???> MとVのやりとりが直接出来ないから
つーかやったらいかんだろw
MVCって何か知ってるか。
まあそんなにやりたきゃ、viewにmodelを渡せばいいだけ。
0611nobodyさん
2008/11/12(水) 21:43:29ID:???0613604
2008/11/13(木) 11:26:34ID:???やっぱりfind()で統一の方向なのか…
AND検索はマジックメソッド使った方が書きやすいから好きだったんだけど。
今後はfind()で統一してみる。
0614nobodyさん
2008/11/13(木) 12:56:14ID:???いいと思うんだけどなぁ・・・。
再利用するかしないかは別として。
まぁ、個人的な意見なのですが。
0615nobodyさん
2008/11/13(木) 16:20:24ID:???0616nobodyさん
2008/11/13(木) 18:25:42ID:???0617nobodyさん
2008/11/13(木) 20:23:44ID:???生産性を第一に考えると関数化してモデルに入れるよりも
コントローラ内で同じ構文を連続コピペした方が早い場合もあるんだよね。
例えば、納期がほとんどないという、追い込まれた状況なら
わざわざ関数化するのも時間がかかるじゃん、そういう意味もあるんだな
時間が限りなくあるなら、出来るだけ関数化してモデルに入れるのがベストだけどさ
0618nobodyさん
2008/11/13(木) 20:26:25ID:???0619nobodyさん
2008/11/13(木) 20:32:36ID:???CakePHPでの経験が無いと、いきなりは、逆に時間がかかり
重要である生産性が落ちると思う。
経験を積みながら、少しずつリファクタリングすてモデルを厚くしていく方法がベストかな
0620nobodyさん
2008/11/13(木) 22:47:32ID:???コントローラーにコードを書きまくってたんだが、
徐々に慣れてきてからは、モデルを厚くする方が良さそうだなという感想。
0621nobodyさん
2008/11/14(金) 15:37:31ID:???って現象に陥った人っていらっしゃいますか?
ブラウザ?と思ったんですが、どのブラウザでも真っ白になっちゃいます。
1.1系で試したらうまくいくのに…。
mod_rewriteも有効、phpのバージョンもOK、パーミッションも変更済み。
.htaccessの内容も確認しましたが、1.1と1.2で同じでした。
同じ現象にぶち当たった方、いらっしゃったら教えてください><
■ このスレッドは過去ログ倉庫に格納されています