【PHP】フレームワークについて語るスレ10【総合】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/08/24(日) 21:43:37ID:???http://pc11.2ch.net/test/read.cgi/php/1202521438/
0784nobodyさん
2008/12/03(水) 00:57:25ID:???0785nobodyさん
2008/12/03(水) 03:25:54ID:???まあ判別して不明なら受け入れるっていうのが慎重かつ幅広い対応なんだろうな
んで、Yiiはどこに行ったんだ。実は少し期待してるんだけど。
0786nobodyさん
2008/12/03(水) 05:58:13ID:???0788nobodyさん
2008/12/03(水) 11:40:40ID:???0791nobodyさん
2008/12/04(木) 03:38:13ID:???他にない?
0793nobodyさん
2008/12/04(木) 09:33:58ID:???0795nobodyさん
2008/12/04(木) 17:07:38ID:???0796nobodyさん
2008/12/04(木) 17:17:08ID:???symfonyはクラスをプロジェクト配下のどのファイルの中に置いていても、
勝手に検索してサーチパスを組み立ててくれるから
固定的な命名規則に気を遣う必要がない
0797nobodyさん
2008/12/04(木) 20:05:14ID:???0798nobodyさん
2008/12/04(木) 20:56:51ID:???ものすごく愚かっぽいんだが
0799nobodyさん
2008/12/04(木) 21:20:32ID:???class sfCoreAutoload
protected $classes = array (
'sfAction' => 'action',
'sfActionStack' => 'action',
'sfActionStackEntry' => 'action',
'sfActions' => 'action',
'sfComponent' => 'action',
'sfComponents' => 'action',
こんなんが延々と350行もあんだぜ。
autoloaderのクラスファイルだけで3つもあるし
んで肝心のファイル読み込みは
require($this->classes[$class]);
とか
require($this->classes[$module.'/'.$class]);
だったら普通にPEAR/Zend/Solar系の命名規則の方がいいと思う。
0800nobodyさん
2008/12/04(木) 23:53:26ID:???だいたい、仮にもフレームワークを使っていて、外部クラスを『どこにでも』置きたいとか思わない。
そういったもの(基本拡張やvendor等外部ライブラリ)が考慮されていない糞FWは別なのかな?
0802nobodyさん
2008/12/05(金) 15:23:38ID:???0803nobodyさん
2008/12/05(金) 18:19:40ID:???0804nobodyさん
2008/12/05(金) 20:37:02ID:???コンパイルID指定すればOK
http://www.smarty.net/manual/ja/api.fetch.php
0805804
2008/12/05(金) 20:38:34ID:???0807nobodyさん
2008/12/06(土) 01:54:13ID:???0808nobodyさん
2008/12/06(土) 01:58:14ID:???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の頃から、本当は&って書かなきゃいけない事になってるんだぜ。
■ このスレッドは過去ログ倉庫に格納されています