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

【PHP】フレームワークについて語るスレ10【総合】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/08/24(日) 21:43:37ID:???
前スレ
http://pc11.2ch.net/test/read.cgi/php/1202521438/
0755nobodyさん2008/12/02(火) 17:30:38ID:???
>>751
サービス指向と一緒にググるとよくわかる多分
0756nobodyさん2008/12/02(火) 19:21:20ID:???
helloのベンチなんて高機能FWが不利に決まってるジャマイカ
0757nobodyさん2008/12/02(火) 20:29:16ID:???
yiiって3メートル競走でフェラーリに勝ったと宣言する原付みたいだねm9(^Д^)プギャー
0758nobodyさん2008/12/02(火) 21:23:24ID:???
一応ActiveRecordやpure OOP、ドキュメントの整備なんかもウリにしてるみたい
=等の演算子にスペースをつけないとか if 〜 else で { } を省略したり ?> を書かない
スタイルだったり、ところどころに小さなこだわり(?)を感じるw
demoしか見てないけど、Controllerの記述なんかはシンプルでいい感じ。(guessworkみたい?)
簡単なWebアプリなら、ドキュメント読まなくても何とかなるかな?
0759nobodyさん2008/12/02(火) 21:47:13ID:???
ベンチって脊髄反射で熱くなるやつ多いよな
CakePHPのフォーラムとか
0760nobodyさん2008/12/02(火) 21:58:40ID:???
>?> を書かない
これは当たり前だろ…
むしろ書く方がアホ
0761nobodyさん2008/12/02(火) 22:06:13ID:???
>>759
> ベンチって脊髄反射で熱くなるやつ多いよな

ベンチに問題があることが多いからな。
0762nobodyさん2008/12/02(火) 22:16:29ID:FW3sGcTR
まあ、symfonyは重すぎるな。
0763nobodyさん2008/12/02(火) 22:27:41ID:???
>>749,753,754,756,757
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:???
>>760
決めつける奴も(ry

------------------------------------
<?php
echo "hello\n";
------------------------------------

↑こういうの、気持ち悪くないか?そういう感覚を大事にしてる人間も結構な割合でいるぞ。
0765nobodyさん2008/12/02(火) 22:56:45ID:???
>>764
それでいくと\nが気持ち悪い。ちゃんと書こうよ。
0766nobodyさん2008/12/02(火) 23:11:14ID:???
ん?こうかな?

#!/usr/bin/php
<?php
echo "hello.\n";
0767nobodyさん2008/12/02(火) 23:13:51ID:???
>>766
そのOS依存文字〜!
\nだよ\n!!!
0768nobodyさん2008/12/02(火) 23:13:52ID:???
凄いな・・・理解して書いてないよな。
0769nobodyさん2008/12/02(火) 23:15:23ID:???
どっちも痛いけど>>767が果てしなく痛い
0770nobodyさん2008/12/02(火) 23:16:48ID:???
>>769
ホットケ
0771nobodyさん2008/12/02(火) 23:19:22ID:???
>>766でOSの違いを吸収したつもりだったけど・・・OSXなんてしらね orz
PHP_EOLってのでいいのか
0772nobodyさん2008/12/02(火) 23:26:39ID:???
>>771
Windowsはいいの?
http://side-b.sto.co.jp/weblog/archives/287
0773nobodyさん2008/12/02(火) 23:29:12ID:???
さすがPerlなんともないぜ
0774nobodyさん2008/12/02(火) 23:37:58ID:???
>>772
cygwinとかもしらね orz
(でもそれはLFでいいような気もする)
0775nobodyさん2008/12/02(火) 23:52:13ID:???
VBですら定数あったな
0776nobodyさん2008/12/02(火) 23:52:55ID:???
PHP_EOLはstr_replace(PHP_EOL,'<br />',$str)みたいな使い方するもんだろ。

PHP_EOLを出力に使うなよ。
PHPから抜け出して改行打った場合に、実行するOSによって
改行がバラけるだろ。
0777nobodyさん2008/12/02(火) 23:55:24ID:???
タブやらヌルが一種類で本当によかったよな
0778nobodyさん2008/12/02(火) 23:56:39ID:???
新説ktkr
0779nobodyさん2008/12/03(水) 00:08:32ID:???
サーバのOSでの改行コードだから、両方関係ないだろ。

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:???
Perlだったらjcode.plとかJcode.pmとかEncodeとかあるだろうよ。
0782nobodyさん2008/12/03(水) 00:25:19ID:???
guess して不明なら全部はねる?
まあそういう作り方もあるだろうけどね
0783nobodyさん2008/12/03(水) 00:53:25ID:???
文字コードは、RFCでサーバが出力した文字コード以外でPOSTしても
違反ではない事になってるんだな。

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:???
結局はちいたんで(ry
0787nobodyさん2008/12/03(水) 10:22:38ID:???
>>763
symfonyは他のに比べて読み込むファイルが多すぎなんだよな。
0788nobodyさん2008/12/03(水) 11:40:40ID:???
PHPFWの色々な比較みたいなのやってるサイトとかないかねぇ
0789nobodyさん2008/12/03(水) 13:57:38ID:???
>>788
なんの比較?
0790nobodyさん2008/12/04(木) 03:32:23ID:???
>>763
このソラーって奴はどうなん?
使ってる人いないの?
0791nobodyさん2008/12/04(木) 03:38:13ID:???
symfonyみたいに、自作クラスをどこにでも置ける機能を実装したFWって
他にない?
0792nobodyさん2008/12/04(木) 09:03:19ID:???
>>790
コーディングのお手本に使ってる
0793nobodyさん2008/12/04(木) 09:33:58ID:???
蒼井ソラー
0794nobodyさん2008/12/04(木) 14:09:20ID:???
>>791
kwsk
0795nobodyさん2008/12/04(木) 17:07:38ID:???
俺のソラー
0796nobodyさん2008/12/04(木) 17:17:08ID:???
>>794
symfonyはクラスをプロジェクト配下のどのファイルの中に置いていても、
勝手に検索してサーチパスを組み立ててくれるから
固定的な命名規則に気を遣う必要がない
0797nobodyさん2008/12/04(木) 20:05:14ID:???
そういうことやってるから、重くなるんだよな。
0798nobodyさん2008/12/04(木) 20:56:51ID:???
全ファイルrequireするってこと?
ものすごく愚かっぽいんだが
0799nobodyさん2008/12/04(木) 21:20:32ID:???
 sfCoreAutoload.class.php

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:???
>>791
だいたい、仮にもフレームワークを使っていて、外部クラスを『どこにでも』置きたいとか思わない。
そういったもの(基本拡張やvendor等外部ライブラリ)が考慮されていない糞FWは別なのかな?
0801nobodyさん2008/12/05(金) 03:23:55ID:???
>>798
クラスとファイルパスのマッピング情報はキャッシュされる
全ファイルrequireするわけではない
0802nobodyさん2008/12/05(金) 15:23:38ID:???
それでも最低40ファイル読み込まれるわけだ
0803nobodyさん2008/12/05(金) 18:19:40ID:???
APC使ったらファイル数そんなに関係なくね
0804nobodyさん2008/12/05(金) 20:37:02ID:???
>>350
コンパイルID指定すればOK
http://www.smarty.net/manual/ja/api.fetch.php
08058042008/12/05(金) 20:38:34ID:???
誤爆した
0806nobodyさん2008/12/05(金) 22:43:06ID:???
>>803
ましにはなるけどやっぱり遅い。
0807nobodyさん2008/12/06(土) 01:54:13ID:???
symfony遅いって言ってるのはレンタル鯖使ってるようなD級プログラマだろ?
0808nobodyさん2008/12/06(土) 01:58:14ID:???
負荷について考えずに済むなんてどんだけ小さなシステム運用してんだよ
0809nobodyさん2008/12/06(土) 02:18:52ID:???
いいぞもっとやれ
0810nobodyさん2008/12/06(土) 02:45:59ID:???
例えばDBからのデータをとるとき。

オブジェクトの中に保持する
$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:???
前者はActiveRecordパターン、後者はDataMapperパターンですね。
自分はDataMapperのほうが好き。
0812nobodyさん2008/12/06(土) 03:01:45ID:???
>>810
前者は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'] も可

とかやることは可能だろうし。
08138102008/12/06(土) 03:14:49ID:???
あ、すみません。状況を書いていませんでした。
初心者教育みたいな感じで使うものです。

PHPの基礎的なこと、PHPとHTMLが混在するアレをやったあとで
実践編としてMVC的な考え方を導入しようと思っています。

Vの切り出しはわりとすんなりできるのですが
Mの例はどっちかなぁ。。という。

善し悪しは一概には言えないと思うので
いっそ、好き嫌いを聞いてみようとw
0814nobodyさん2008/12/06(土) 03:31:39ID:???
>>813
使うモノによるんだろうけど、>>810の前者の方は、「〜〜パターン」っていう思想をまず理解し、
そのライブラリのドキュメントのサンプルなんかを熟読して勉強しないと使えない気がする。
後者は、とりあえずニュアンスで使える感じ。
そんなざっくりした感想。

自分の好みはどちらかというと前者の、なんか有機的で乾いてない雰囲気でしかもよく考えられていて
またしっかり作り込まれている、っていうライブラリだけど、そんなものある程度以上は幻想な気がする
ので、どうせ中途半端になるんだからどっちでもいいやって思う。
言い方は悪いが、前者はトリッキー、後者は土方的、に感じる。
0815nobodyさん2008/12/06(土) 03:39:49ID:???
>>812

>あんまり直接比較できないような気がする。

はいw
なので好き嫌いを聞いてみようかな、と。
または感じるメリットかな?

有名そうなフレームワークを見てみましたが
どっちが優勢というわけでもないようです。
0816nobodyさん2008/12/06(土) 03:47:56ID:???
>>814
オブジェクトは実際に存在するモノ、という説明があるるじゃないですか。
それにメッセージを投げて、状態を変える、みたいな。

そうすると、前者のほうが、Weblogオブジェクトとしてより理解しやすいかな、と。
後者は、どっちかとういうとデータベースオブジェクトって感じ。


って、感覚ばっかりいってますね私。
0817nobodyさん2008/12/06(土) 14:38:17ID:???
>>810
$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:???
>>810のどっちかっていう話より、$obj->getTitle() が気になる
値を参照するだけならむしろ $obj->get('title') の方がわかりやすいし、場合によっては
配列使った方が楽できるような気もする
なんかこの辺の、Java風オブジェクト指向っぽいまわりくどい記述が好きになれない
0821nobodyさん2008/12/08(月) 01:26:16ID:???
>>817

ごめんなさい。例がよくなかったかもです。

もしやるなら>>819のような実装を考えております。

ご指摘のサンプルで言えば
$weblog->findById(2);
じゃなくて
$weblog2->findById(2);
という使いかたです。

メソッド名が不自然かな?
0822nobodyさん2008/12/08(月) 01:38:25ID:???
>>820
>値を参照するだけならむしろ $obj->get('title') の方がわかりやすいし

はい。
クラス変数を直接触らせないためのgetter,setterって目的だったら同じことですよね。

実は私も、それでいいんじゃないのかな?と思ったりしましたが
いろいろなフレームワークやOOPの説明を見ても
そういう実例がなかったので入れませんでした。
0823nobodyさん2008/12/08(月) 06:07:44ID:???
自分はget("title")よりgetTitle()派だなぁ
多機能メゾッドはあまり好きくない
0824nobodyさん2008/12/08(月) 10:55:37ID:???
get('title')だとエディタで補完できないし、スペル間違える可能性もあるよね
0825nobodyさん2008/12/08(月) 11:14:50ID:???
>>824
__call() での自動呼び出しとかじゃないの?全部書いちゃうの?

今はどうなのか詳しくは知らないけど、RDBのフィールド名って大文字小文字を区別しないことがあって、キャメルケースは使いにくかったように思う。
だから、いちいち login_password <=> LoginPassword みたいな書き換えが起こるってことだけでJavaっぽいのは違和感があるなー
0826nobodyさん2008/12/09(火) 00:15:24ID:???
>>824
補完したいならconst定義して
->get(BLOG::TITLE)
じゃない?
0827nobodyさん2008/12/09(火) 01:23:06ID:???
> $obj->get('title')
引数に title2 を与えたら何が返ってくるんだ?
汎用的なコンテナじゃないのだから
部品へのインターフェイス、getTitle() を用意すべき

>>826
824は静的テストでチェックできるかどうかを言いたいんでしょ
0828nobodyさん2008/12/09(火) 01:43:15ID:???
nullが返って来ればいいじゃん
0829nobodyさん2008/12/09(火) 01:51:48ID:???
DAOが扱うデータの構造を知らないなんてことはないし、
ユーザ側が直接文字列を投げ込まないといけないようなメゾッドはなんかイマイチ感
0830nobodyさん2008/12/09(火) 02:58:50ID:???
そもそも(特にPHPで実装されている)DAOがダサイっていう意見ではないのかと。
利用する側からしたら、補完機能付きエディタを使うんでなければ 'title' を 'tilte' なんて
書き間違えてあちゃーも getTitle() を getTilte() であちゃーも大して違いはない。
どっちでも例外吐こうと思えば吐けるし。
メソッド名の補完や静的チェックに関しては思想が違うとしか言いようがない。
ActiveRecordも流行の実装は自動的で動的なメソッド定義だし。そんなの静的チェック
なんて(むちゃくちゃ頑張らないと)できないんじゃ?
0831nobodyさん2008/12/09(火) 03:22:57ID:???
シングルトンやサービスロケーターは結局のところグローバルじゃないかね、ケシカラン
とか
DIコンテナって結局GoFのストラテジーじゃないか、イランイラン
とか

OOPって偉い人同士でいつもそんな事言い合ってる、と俺印象。
0832nobodyさん2008/12/09(火) 03:36:48ID:???
>>831
うむ、正しい
えらいひとがはまりやすいところ

でも分かってくると、OOPは大変強力なのも確か
0833nobodyさん2008/12/10(水) 02:22:33ID:???
cakePHPとsymfonyの違いってどんなところ?
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:???
>>834
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:???
>>836
アホって言ってんのは >結局GoFのストラテジーじゃないか、イランイラン
の論理展開のことね。ストラテジーと似通う部分はあるにしても要らんっていうのは飛躍
0838nobodyさん2008/12/10(水) 17:21:51ID:???
ああそこか。
雰囲気を伝えたかっただけで正確に書いたわけではないのだ。
0839nobodyさん2008/12/10(水) 17:25:33ID:???
下らん議論してないで早く833の質問に答えろやゲリクソ野郎ども
0840nobodyさん2008/12/10(水) 17:34:12ID:???
>>833
すみません、おもしろい話が思いつきません
0841nobodyさん2008/12/10(水) 17:41:40ID:???
symfony使ったことない
PEARでインストール出来るみたいだけど、PEARに依存してる?
本体や拡張のどこかで PEAR.php をrequireしたりしてたりしないよね。
0842nobodyさん2008/12/10(水) 19:36:26ID:???
シンフォニー JAVA的
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:???
Java的とかPHP的とか例えが狂ってるだろ
使ったことがないんじゃなくて使えないんだろ
0846nobodyさん2008/12/10(水) 20:27:01ID:???
人の事いいから
お前の意見は
0847nobodyさん2008/12/10(水) 20:35:59ID:???
下らんことで荒らすなカス共
0848nobodyさん2008/12/10(水) 20:43:48ID:???
>>846
意見も何も>>842のやりたいことが意味不明だから
使ってないのに俺印象とか、何の印象だよ エスパーかよ
PHPとかJavaとかRoRとか何のカテゴライズだよ
なんでフレームワークと言語がごっちゃになってるんだよ
お前の意見は、意見は、って何が聞きたいんだよ
0849nobodyさん2008/12/11(木) 00:23:14ID:???
>>848
〜的は使った人から聞いての俺なりの印象。

クリケットは英国的
これ聞いてスポーツの話してんのに国の話して狂ってるとか言ってるのがお前。イメージ伝わらなかったらそれでいいんでスルーしろよ。

それ以上やりたいならURL指定してくれ。そこでいくらでも粘着つき合ってやる。
0850nobodyさん2008/12/11(木) 02:09:29ID:???
>>849
それどういうイメージ?
0851nobodyさん2008/12/11(木) 08:36:06ID:???
>>849
スポーツとかいきなり例えにもなっていないもの持ち出してどうすんだよ
使ったことすら無い人間と議論して何を得られると思ってるんだよ
0852nobodyさん2008/12/11(木) 08:42:59ID:???
得られた答えが使ったことない人の先入観だけとは・・
cakeとsymfony両方使った人いないのですか?
早く答えろよ、ミクロちんぽ男どもが。
0853nobodyさん2008/12/11(木) 11:13:45ID:???
yiiフォーラム、日本だけ書き込みないってのもなんか寂しいなw
0854nobodyさん2008/12/11(木) 12:00:39ID:???
きっと日本人はみんな英語のフォーラムで十分なんだよ!
と言ってみる。
0855nobodyさん2008/12/11(木) 13:11:31ID:???
yiiを試用したみたいなページが日本語であったので、参考に少し触ってみた。
viewファイルの拡張子が .php 決め打ちに見えるorz
CController.phpにハードコードしてるように見えるんだが、どこかで変えられるのかな・・・

ってのを、誰か英語で質問よろしく。
■ このスレッドは過去ログ倉庫に格納されています