【PHP】フレームワークについて語るスレ10【総合】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/08/24(日) 21:43:37ID:???http://pc11.2ch.net/test/read.cgi/php/1202521438/
0756nobodyさん
2008/12/02(火) 19:21:20ID:???0757nobodyさん
2008/12/02(火) 20:29:16ID:???0758nobodyさん
2008/12/02(火) 21:23:24ID:???=等の演算子にスペースをつけないとか if 〜 else で { } を省略したり ?> を書かない
スタイルだったり、ところどころに小さなこだわり(?)を感じるw
demoしか見てないけど、Controllerの記述なんかはシンプルでいい感じ。(guessworkみたい?)
簡単なWebアプリなら、ドキュメント読まなくても何とかなるかな?
0759nobodyさん
2008/12/02(火) 21:47:13ID:???CakePHPのフォーラムとか
0760nobodyさん
2008/12/02(火) 21:58:40ID:???これは当たり前だろ…
むしろ書く方がアホ
0762nobodyさん
2008/12/02(火) 22:16:29ID:FW3sGcTR0763nobodyさん
2008/12/02(火) 22:27:41ID:???I can hear the objections now:
* “Not realistic!”
* “Not comprehensive!”
* “Doesn’t account for features that I like!”
* “Who cares, I don’t need that level of responsiveness!”
* “Doesn’t matter if Framework X is slower, I’m more productive with it!”
Yes, yes, you’re all correct. ┐(´ー`)┌
http://paul-m-jones.com/blog/?p=236
0764nobodyさん
2008/12/02(火) 22:49:14ID:???決めつける奴も(ry
------------------------------------
<?php
echo "hello\n";
------------------------------------
↑こういうの、気持ち悪くないか?そういう感覚を大事にしてる人間も結構な割合でいるぞ。
0766nobodyさん
2008/12/02(火) 23:11:14ID:???#!/usr/bin/php
<?php
echo "hello.\n";
0768nobodyさん
2008/12/02(火) 23:13:52ID:???0772nobodyさん
2008/12/02(火) 23:26:39ID:???Windowsはいいの?
http://side-b.sto.co.jp/weblog/archives/287
0773nobodyさん
2008/12/02(火) 23:29:12ID:???0775nobodyさん
2008/12/02(火) 23:52:13ID:???0776nobodyさん
2008/12/02(火) 23:52:55ID:???PHP_EOLを出力に使うなよ。
PHPから抜け出して改行打った場合に、実行するOSによって
改行がバラけるだろ。
0777nobodyさん
2008/12/02(火) 23:55:24ID:???0778nobodyさん
2008/12/02(火) 23:56:39ID:???0779nobodyさん
2008/12/03(水) 00:08:32ID:???hello worldでPHP_EOL
見てる人のOSで改行されるとは限らない。
スクリプトで使ってる改行が実行サーバの改行コードと同じとは限らない。
str_replaceでPHP_EOL
見てる人のOSの改行コードがサーバと同じとは限らない。
0780nobodyさん
2008/12/03(水) 00:20:28ID:???「スクリプトで使ってる改行」はPHPがなんか吸収してくれてるっぽいけどな。
LFでもCRLFでも動く。CRのみは知らないけどw
Perl CGI から移って最初のカルチャーショックはそれ。普通にLinuxマシンに
CRLFでアップロードしてるんじゃねーよって。
だから >>773 には半分だけ同意w
>>776は新説。展開に期待しよう。
ブラウザがどの文字コードでどの改行コードでフォームデータを送ってくるか、
その辺もそろそろ定義および実装してほしいもんだ。
現状、なんとなく、UTF-8のページからは(ユーザの悪意がなければ)UTF-8で
飛んでくることを期待して作ってしまうんだが大丈夫なのかな・・・。
改行コードは仕方ないから変換するけど。
スレ違いスマソ
0781nobodyさん
2008/12/03(水) 00:23:14ID:???0782nobodyさん
2008/12/03(水) 00:25:19ID:???まあそういう作り方もあるだろうけどね
0783nobodyさん
2008/12/03(水) 00:53:25ID:???違反ではない事になってるんだな。
accept-charsetっていうのもあるけど、対応して無いブラウザもある。
被ってる領域内の文字しか無かったら判別は不可能なのにね。
実際は大抵のブラウザはヘッダの指定と同じ文字コード送ってくれるし
mb_conbertとかで優先順の1位を出力にあわせればまず平気だけども
イレギュラーなブラウザは存在する。
あとはhiddenで文字コード判別出来る文字列送るって方法もある。
英語圏なら全てctypeでOKなのにな。
RFCもブラウザ作ってる奴も文字コード増やしてる奴も爆発しろ。
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にハードコードしてるように見えるんだが、どこかで変えられるのかな・・・
ってのを、誰か英語で質問よろしく。
■ このスレッドは過去ログ倉庫に格納されています