【PHP】フレームワークについて語るスレ10【総合】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2008/08/24(日) 21:43:37ID:???http://pc11.2ch.net/test/read.cgi/php/1202521438/
0809nobodyさん
2008/12/06(土) 02:18:52ID:???0810nobodyさん
2008/12/06(土) 02:45:59ID:???オブジェクトの中に保持する
$WB = new Weblog;
$WB->findById( 1 );
echo $WB->getTitle() ;
みたいなヤツと
データセットを返すやつ
$WB = new Weblog;
$data = $WB->findById( 1 );
echo $data['title'] ;
どっちが好きですか??
オブジェクト思考っぽいのは前者かなぁとか思うのですけども
後者のほうが、なんか使いやすい感じもする。
0811nobodyさん
2008/12/06(土) 02:55:55ID:???自分はDataMapperのほうが好き。
0812nobodyさん
2008/12/06(土) 03:01:45ID:???前者はActiveRecordっぽいってことになるのかな?それなら、
$WB->findById( 1 );
echo $WB->getTitle() ; // $WB->title もたぶん可
$WB->title = 'new title';
$WB->save();
とかできるメリットが結構大きいような。あんまり直接比較できないような気がする。
例えば前者でも、後者との折衷で返値を持つようにして、
$data = $WB->findById(1);
echo $data->title; // 配列で返せば echo $data['title'] も可
とかやることは可能だろうし。
0813810
2008/12/06(土) 03:14:49ID:???初心者教育みたいな感じで使うものです。
PHPの基礎的なこと、PHPとHTMLが混在するアレをやったあとで
実践編としてMVC的な考え方を導入しようと思っています。
Vの切り出しはわりとすんなりできるのですが
Mの例はどっちかなぁ。。という。
善し悪しは一概には言えないと思うので
いっそ、好き嫌いを聞いてみようとw
0814nobodyさん
2008/12/06(土) 03:31:39ID:???使うモノによるんだろうけど、>>810の前者の方は、「〜〜パターン」っていう思想をまず理解し、
そのライブラリのドキュメントのサンプルなんかを熟読して勉強しないと使えない気がする。
後者は、とりあえずニュアンスで使える感じ。
そんなざっくりした感想。
自分の好みはどちらかというと前者の、なんか有機的で乾いてない雰囲気でしかもよく考えられていて
またしっかり作り込まれている、っていうライブラリだけど、そんなものある程度以上は幻想な気がする
ので、どうせ中途半端になるんだからどっちでもいいやって思う。
言い方は悪いが、前者はトリッキー、後者は土方的、に感じる。
0815nobodyさん
2008/12/06(土) 03:39:49ID:???>あんまり直接比較できないような気がする。
はいw
なので好き嫌いを聞いてみようかな、と。
または感じるメリットかな?
有名そうなフレームワークを見てみましたが
どっちが優勢というわけでもないようです。
0816nobodyさん
2008/12/06(土) 03:47:56ID:???オブジェクトは実際に存在するモノ、という説明があるるじゃないですか。
それにメッセージを投げて、状態を変える、みたいな。
そうすると、前者のほうが、Weblogオブジェクトとしてより理解しやすいかな、と。
後者は、どっちかとういうとデータベースオブジェクトって感じ。
って、感覚ばっかりいってますね私。
0817nobodyさん
2008/12/06(土) 14:38:17ID:???$weblog = new Weblog();
$weblog->getTitle(); // コンストラクタ実行した直後にメソッドが死んでるってふざけてるの?
$weblog->findById(1); // 何を見つけるの?え、getTitle が生き返るの?ザオリクなの?
$weblog->setTitle('new title');
$weblog->save(); // 今の状態を永続化しますね
$weblog->findById(2);
if ($weblog->getTitle() !== 'new title') {
// setTitle 呼んでないのになんでタイトル変わってるの?findById 呼んだせいなの?
// findById で始まるトランザクションはどこまで続くの?野をこえ山をこえるの?
// というか働きすぎじゃないの?コンストラクタ以上にコンストラクタ味なの?
}
そんな訳で後者が好きです
0818nobodyさん
2008/12/06(土) 15:11:24ID:???前者でも、データセットを返す機能がほしければそういうメゾッドを実装すればいいわけで
基本的にはオブジェクトの中で簡潔してるほうがいいかなぁって気もするし
後者だけだと、なんか丸投げな感が機能不足って感じだから前者のが好みかな
ってか使用用途が微妙に違う気がする
0819nobodyさん
2008/12/07(日) 00:31:50ID:???アクティブレコードに類似してるけど、教科書(PofEAA)にならうならfindByIdメソッドは
新たに生成したWeblogのインスタンスを返すべき。
function findById($id) {
...
$data = mysql_fetch...
$weblog = new Weblog();
$weblog->setTitle($data['title']);
return $weblog;
}
0820nobodyさん
2008/12/07(日) 03:55:48ID:???値を参照するだけならむしろ $obj->get('title') の方がわかりやすいし、場合によっては
配列使った方が楽できるような気もする
なんかこの辺の、Java風オブジェクト指向っぽいまわりくどい記述が好きになれない
0821nobodyさん
2008/12/08(月) 01:26:16ID:???ごめんなさい。例がよくなかったかもです。
もしやるなら>>819のような実装を考えております。
ご指摘のサンプルで言えば
$weblog->findById(2);
じゃなくて
$weblog2->findById(2);
という使いかたです。
メソッド名が不自然かな?
0822nobodyさん
2008/12/08(月) 01:38:25ID:???>値を参照するだけならむしろ $obj->get('title') の方がわかりやすいし
はい。
クラス変数を直接触らせないためのgetter,setterって目的だったら同じことですよね。
実は私も、それでいいんじゃないのかな?と思ったりしましたが
いろいろなフレームワークやOOPの説明を見ても
そういう実例がなかったので入れませんでした。
0823nobodyさん
2008/12/08(月) 06:07:44ID:???多機能メゾッドはあまり好きくない
0824nobodyさん
2008/12/08(月) 10:55:37ID:???0825nobodyさん
2008/12/08(月) 11:14:50ID:???__call() での自動呼び出しとかじゃないの?全部書いちゃうの?
今はどうなのか詳しくは知らないけど、RDBのフィールド名って大文字小文字を区別しないことがあって、キャメルケースは使いにくかったように思う。
だから、いちいち login_password <=> LoginPassword みたいな書き換えが起こるってことだけでJavaっぽいのは違和感があるなー
0827nobodyさん
2008/12/09(火) 01:23:06ID:???引数に title2 を与えたら何が返ってくるんだ?
汎用的なコンテナじゃないのだから
部品へのインターフェイス、getTitle() を用意すべき
>>826
824は静的テストでチェックできるかどうかを言いたいんでしょ
0828nobodyさん
2008/12/09(火) 01:43:15ID:???0829nobodyさん
2008/12/09(火) 01:51:48ID:???ユーザ側が直接文字列を投げ込まないといけないようなメゾッドはなんかイマイチ感
0830nobodyさん
2008/12/09(火) 02:58:50ID:???利用する側からしたら、補完機能付きエディタを使うんでなければ 'title' を 'tilte' なんて
書き間違えてあちゃーも getTitle() を getTilte() であちゃーも大して違いはない。
どっちでも例外吐こうと思えば吐けるし。
メソッド名の補完や静的チェックに関しては思想が違うとしか言いようがない。
ActiveRecordも流行の実装は自動的で動的なメソッド定義だし。そんなの静的チェック
なんて(むちゃくちゃ頑張らないと)できないんじゃ?
0831nobodyさん
2008/12/09(火) 03:22:57ID:???とか
DIコンテナって結局GoFのストラテジーじゃないか、イランイラン
とか
OOPって偉い人同士でいつもそんな事言い合ってる、と俺印象。
0833nobodyさん
2008/12/10(水) 02:22:33ID:???0834nobodyさん
2008/12/10(水) 03:09:07ID:???>DIコンテナって結局GoFのストラテジーじゃないか、イランイラン
0835nobodyさん
2008/12/10(水) 05:29:58ID:???error_reporting(E_ALL);
print $row['tilte'];
0836nobodyさん
2008/12/10(水) 09:01:52ID:???http://www.infoq.com/jp/news/2007/12/does-di-pay-off
http://kohari.org/2007/08/15/defending-dependency-injection/
0837nobodyさん
2008/12/10(水) 15:41:06ID:???アホって言ってんのは >結局GoFのストラテジーじゃないか、イランイラン
の論理展開のことね。ストラテジーと似通う部分はあるにしても要らんっていうのは飛躍
0838nobodyさん
2008/12/10(水) 17:21:51ID:???雰囲気を伝えたかっただけで正確に書いたわけではないのだ。
0839nobodyさん
2008/12/10(水) 17:25:33ID:???0841nobodyさん
2008/12/10(水) 17:41:40ID:???PEARでインストール出来るみたいだけど、PEARに依存してる?
本体や拡張のどこかで PEAR.php をrequireしたりしてたりしないよね。
0842nobodyさん
2008/12/10(水) 19:36:26ID:???cake ROR的
CI PHP的
俺印象。どれも使った事は無い。
0843nobodyさん
2008/12/10(水) 19:38:31ID:???0844nobodyさん
2008/12/10(水) 19:42:03ID:???0845nobodyさん
2008/12/10(水) 20:00:37ID:???使ったことがないんじゃなくて使えないんだろ
0846nobodyさん
2008/12/10(水) 20:27:01ID:???お前の意見は
0847nobodyさん
2008/12/10(水) 20:35:59ID:???0848nobodyさん
2008/12/10(水) 20:43:48ID:???意見も何も>>842のやりたいことが意味不明だから
使ってないのに俺印象とか、何の印象だよ エスパーかよ
PHPとかJavaとかRoRとか何のカテゴライズだよ
なんでフレームワークと言語がごっちゃになってるんだよ
お前の意見は、意見は、って何が聞きたいんだよ
0849nobodyさん
2008/12/11(木) 00:23:14ID:???〜的は使った人から聞いての俺なりの印象。
クリケットは英国的
これ聞いてスポーツの話してんのに国の話して狂ってるとか言ってるのがお前。イメージ伝わらなかったらそれでいいんでスルーしろよ。
それ以上やりたいならURL指定してくれ。そこでいくらでも粘着つき合ってやる。
0851nobodyさん
2008/12/11(木) 08:36:06ID:???スポーツとかいきなり例えにもなっていないもの持ち出してどうすんだよ
使ったことすら無い人間と議論して何を得られると思ってるんだよ
0852nobodyさん
2008/12/11(木) 08:42:59ID:???cakeとsymfony両方使った人いないのですか?
早く答えろよ、ミクロちんぽ男どもが。
0853nobodyさん
2008/12/11(木) 11:13:45ID:???0854nobodyさん
2008/12/11(木) 12:00:39ID:???と言ってみる。
0855nobodyさん
2008/12/11(木) 13:11:31ID:???viewファイルの拡張子が .php 決め打ちに見えるorz
CController.phpにハードコードしてるように見えるんだが、どこかで変えられるのかな・・・
ってのを、誰か英語で質問よろしく。
0858nobodyさん
2008/12/11(木) 23:07:29ID:???0859nobodyさん
2008/12/12(金) 01:15:47ID:???0860nobodyさん
2008/12/12(金) 04:32:30ID:???あの途中からどんどんふぁびょってってるようなアレかw
なかなか面白かったけどw
他のフレームワークの使用経験も殆どないけど、yiiちょっと触ってみるかなー
せっかくだしお勉強してみよう
0861nobodyさん
2008/12/12(金) 05:09:09ID:???〜hogehoge/index.php/hagehage〜
みたいにはできるけど、このindex.phpもどうせなら表示しないようにしたいな
英語超苦手だけどちょっとドキュメントとにらめっこしてみるか…
0862nobodyさん
2008/12/12(金) 13:27:05ID:???それはpathinfoみてやってるんだろうね。
mod_rewriteなんかを使わないと、実行スクリプトの省略はたぶん無理。
mod_rewriteでいいなら、railsでもcakeでもZFでも何でもいいから.htaccessをパクってくればおk。
フロントコントローラ置いてるフレームワークなら大概同じ。
0863nobodyさん
2008/12/12(金) 15:55:13ID:???rewrite前提なのは理解してます
直接アンカータグ書いてURI決めうちしとけば問題ないんですが
たとえば、(略) array('label'=>'Home', 'url'=>array('site/index')), (ry)
て感じに指定してURL吐かせると /appname/index.php/site/index
といった絶対パスになるんすよ(urlFormat=>path設定しておいた場合)
なんで、これを相対( ./site/index ) とかで吐かせれないかなーと思いまして
0864nobodyさん
2008/12/12(金) 17:46:15ID:???/hoge/page の絶対指定が定番だと思ってた。てかデザイナにもそう頼んでるw
0865nobodyさん
2008/12/12(金) 17:59:27ID:???0868nobodyさん
2008/12/16(火) 10:35:42ID:tHoVMtEcって感じのPATHINFO的パスって、一時期はSEO的な意味もあったかもしれないが
今となっては何の意味もなくね?
むしろ今となっては非本質的で気持ち悪い気ガス
0869nobodyさん
2008/12/16(火) 10:43:14ID:???結局は&や?を/に置き換えてるだけだもんな。
グーグルとかのクローラーは知らんけど、人間が読む分には、すなおにindex.cgi?name=foo&passwd=barとやった方がわかりやすいよな。
0870nobodyさん
2008/12/16(火) 10:45:25ID:???0871nobodyさん
2008/12/16(火) 12:00:14ID:???とかできて便利じゃないか。
<a href="./">やりなおし</a>
とかも、パラメタが全部引っ付いてきてお得じゃないか。
0872nobodyさん
2008/12/16(火) 14:05:02ID:???けどただのパラメータを/区切りにする意味はないと思ってる
ようは>>871の言うようなことが出来ないただのデータの羅列なら素直に>>869的にやるべき
0873871
2008/12/16(火) 17:04:46ID:???俺はPATH_INFO賛成派だが、
http://.../user/yamada/pass/word/sex/male
みたいなパラメタ付けは好きじゃない。
http://...../map/pref/12/
で、"../13/"で隣の県が参照できたり、"../"で都道府県一覧が
表示されるのが美しいと思う。
0874nobodyさん
2008/12/16(火) 17:17:06ID:???0875nobodyさん
2008/12/16(火) 18:01:40ID:???>>873が言うのは、URLの見た目通りに、ディレクトリ階層っぽい作りがいいって話だろ。多分。
順番はむしろ固定しなきゃ。
0877nobodyさん
2008/12/16(火) 20:05:52ID:???ndex.cgi?name=foo&passwd=baが読みやすいというのは
プログラマー的な視点だと思う。
しかもpasswd筒抜けやんw
初心者は
hoge.com/poge/categoryId/100
で区切られてる方がわかりやすい
0878nobodyさん
2008/12/16(火) 20:09:51ID:???俺は迷わずURLに(=^_^=) を使う
hoge.com(=^_^=) poge(=^_^=) categoryId(=^_^=) 100
URL形式はまさにグーグル様次第だ
0879nobodyさん
2008/12/16(火) 20:11:17ID:???0880nobodyさん
2008/12/16(火) 20:16:09ID:???根拠となるデータがないとまず無理
0881nobodyさん
2008/12/16(火) 20:18:34ID:???顔文字でも何でも使うよ
まずクエリでも差がないという信用できるデータが欲しい
0882nobodyさん
2008/12/16(火) 20:31:31ID:???yahoo等の大手サイトでは、
めっきり「必然性のないpathinfo形式」を見なくなった気がする
0883nobodyさん
2008/12/16(火) 20:42:43ID:???yahooのURLはSEOのお手本というより
自社都合のURL形式にしてるんじゃないかな
0884nobodyさん
2008/12/16(火) 22:18:32ID:???ディレクトリと同じで、コントローラの中にアクションがあるっていう
入れ子関係なんだし。
ドメイン/大枠/小枠/パラメータって決まってた方が綺麗じゃん。
ユーザが、URIを削ったりした時に、indexでカテゴリーの目次に飛んだり出来るじゃん。
クエリに&使う場合って、w3cのストリクトな文法ではHTML内でリンク書く時でも
HTML2.0の頃から、本当は&って書かなきゃいけない事になってるんだぜ。
0885nobodyさん
2008/12/16(火) 22:20:21ID:???下の&は&amp;な。
0886nobodyさん
2008/12/16(火) 23:07:56ID:???> >>869
> ndex.cgi?name=foo&passwd=baが読みやすいというのは
> プログラマー的な視点だと思う。
> しかもpasswd筒抜けやんw
> 初心者は
> hoge.com/poge/categoryId/100
> で区切られてる方がわかりやすい
name=fooなら、nameとfooが対応してるのが誰でも分かるだろう。&ってANDが文章をつなぐ単語って小学生でも知ってる。
/で区切るとどこまでがURLでどこからがクエリパラメータか分からない。
http://example.com/news/name/10で、nameがアクションクラス名なのかクエリパラメータのキー名なのか、誰にも分からない。
0887nobodyさん
2008/12/16(火) 23:59:17ID:???http://example.com/news/name/10.html というURLだったとして、
動的に出力されているのか静的に置かれているのかも誰にもわからない。
そしてそれは、いずれ静的なファイルに置き換えてもリンクを変更する必要がない。
こういう事をいうと You Aren't Gonna Need It とか言われるのかも知れないけど、あくまで一利点として。
0888nobodyさん
2008/12/17(水) 01:16:44ID:???>name=fooなら、nameとfooが対応してるのが誰でも分かるだろう
おまえがプログラマだからだろ?
初めてPCさわったとき、URLの意味が全く不明でした
URLつかってデータ飛ばしてるということ知らなかったし
だからURLは/区切りの方が単純明快でわかりやすい
わかりやすいといっても素人的観点からのわかりやすいという意味だよ
nameがわからないとかはプログラマ視点やろ
0889nobodyさん
2008/12/17(水) 01:21:40ID:???yahooとかのクエリて
どんだけパラメータはいってんねん、
これ何の変数なん?てくらい
長いで
あそこまで長いパラメータなら区切てのクエリでも
変わらんわな。ロボットも長いURL拾わんやろうし
0890nobodyさん
2008/12/17(水) 01:24:05ID:???0891nobodyさん
2008/12/17(水) 06:45:41ID:???いっこ削って上の階層にいけないようならスラッシュ区切りにする意味ないとおもうわー
0892nobodyさん
2008/12/17(水) 08:45:42ID:???携帯のブラウザなんかだと、URLが確認出来なかったりするぐらいだから。
あえてURLを見ようと思った時に、/区切りでパラメータとURLが一体になってる方がわかりやすいか、パラメータがハッキリ区別されてる方がわかりやすいか。当然、後者。
/区切りが有効なのは、昔のSEO対策ぐらいなもの。それ以外は開発者の自己満足。
0893nobodyさん
2008/12/17(水) 11:19:55ID:???0894nobodyさん
2008/12/17(水) 19:49:31ID:???0895nobodyさん
2008/12/17(水) 20:58:37ID:???URLで何を表してるか、なんじゃないかなぁ。。
そこで出てるニュースの例なら
news.php&year=2009&mon=12&day=17
よりも
news/2009/12/17
のほうが、意味あいとして分かりやすいと思うけど。
0896nobodyさん
2008/12/18(木) 01:49:52ID:???URL本体とクエリストリングは本来機能が違う物なのに、わざわざごちゃ混ぜにしてるところに問題がある。
しかも、mod_rewriteに頼らないと行けない。
画面とURLのマッピング表を参照しなければ、クエリストリングが取り出せなくなるのは、開発性の低下。
手間がかかるくせにメリットが少ないから、/区切りにするのはくだらないと思う。
0897nobodyさん
2008/12/18(木) 01:54:25ID:???そんなことはない
0898nobodyさん
2008/12/18(木) 02:07:07ID:???0899nobodyさん
2008/12/18(木) 02:09:31ID:???ヘルパを通すと一括してpathinfoにされることではないか。
0900nobodyさん
2008/12/18(木) 02:10:07ID:???例えばnucleusのfancyモードもmod_rewirte使ってない。
0901nobodyさん
2008/12/18(木) 02:16:40ID:???0902nobodyさん
2008/12/18(木) 02:16:47ID:???0903nobodyさん
2008/12/18(木) 02:20:07ID:???開発効率落としてまでやる事じゃないと思うけど、それがこだわりだって言われれば、そりゃ勝手ではあると思う。
0904nobodyさん
2008/12/18(木) 02:21:36ID:???.htaccessで済む。まぁ許可されていればの話しだが。
> 画面とURLのマッピング表を参照しなければ、クエリストリングが取り出せなくなるのは、開発性の低下。
フレームワーク使っているのなら、わざわざクエリストリングを直接弄るようなことはないだろうに。
>>901に同意。俺は/区切りの方がスッキリする。
0905nobodyさん
2008/12/18(木) 02:31:24ID:???0906nobodyさん
2008/12/18(木) 02:40:08ID:???画像加工済みであれば、ファイルが存在するからそれを返して
まだであれば、加工して保存後それを返すって感じで
0907nobodyさん
2008/12/18(木) 02:42:33ID:???例えばhttp://example.com/news/2008/12/18だって、年月日の順で引数が渡されることを把握してなければいけない。
こんなのすごくくだらない。
func(2008,12,18)ってプロトタイプよりfunc(array(year=>2008,mon=>12,day=>18))の方がメンテナンス性の高いプロトタイプだよ。
0908nobodyさん
2008/12/18(木) 02:53:47ID:???順番変更になってもルーティング弄れば全部反映されるし
ただパフォーマンス的にコストがちょっとかかるけど
レス数が900を超えています。1000を超えると表示できなくなるよ。