のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,663,772人
昨日:no data人
今日:
最近の注目
人気の最安値情報

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

php覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
801 = :

>>798
クラスとファイルパスのマッピング情報はキャッシュされる
全ファイルrequireするわけではない

802 = :

それでも最低40ファイル読み込まれるわけだ

803 = :

APC使ったらファイル数そんなに関係なくね

804 = :

>>350
コンパイルID指定すればOK
http://www.smarty.net/manual/ja/api.fetch.php

805 = :

誤爆した

806 = :

>>803
ましにはなるけどやっぱり遅い。

808 = :

負荷について考えずに済むなんてどんだけ小さなシステム運用してんだよ

809 = :

いいぞもっとやれ

810 = :

例えばDBからのデータをとるとき。

オブジェクトの中に保持する
$WB = new Weblog;
$WB->findById( 1 );
echo $WB->getTitle() ;
みたいなヤツと

データセットを返すやつ
$WB = new Weblog;
$data = $WB->findById( 1 );
echo $data['title'] ;

どっちが好きですか??

オブジェクト思考っぽいのは前者かなぁとか思うのですけども
後者のほうが、なんか使いやすい感じもする。

812 = :

>>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'] も可

とかやることは可能だろうし。

813 = :

あ、すみません。状況を書いていませんでした。
初心者教育みたいな感じで使うものです。

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

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

善し悪しは一概には言えないと思うので
いっそ、好き嫌いを聞いてみようとw

814 = :

>>813
使うモノによるんだろうけど、>>810の前者の方は、「~~パターン」っていう思想をまず理解し、
そのライブラリのドキュメントのサンプルなんかを熟読して勉強しないと使えない気がする。
後者は、とりあえずニュアンスで使える感じ。
そんなざっくりした感想。

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

815 = :

>>812

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

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

有名そうなフレームワークを見てみましたが
どっちが優勢というわけでもないようです。

816 = :

>>814
オブジェクトは実際に存在するモノ、という説明があるるじゃないですか。
それにメッセージを投げて、状態を変える、みたいな。

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


って、感覚ばっかりいってますね私。

817 = :

>>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 で始まるトランザクションはどこまで続くの?野をこえ山をこえるの?
  // というか働きすぎじゃないの?コンストラクタ以上にコンストラクタ味なの?
}

そんな訳で後者が好きです

818 = :

ようは、前者が参照渡しで後者が値渡しみたいな感じかな
前者でも、データセットを返す機能がほしければそういうメゾッドを実装すればいいわけで
基本的にはオブジェクトの中で簡潔してるほうがいいかなぁって気もするし
後者だけだと、なんか丸投げな感が機能不足って感じだから前者のが好みかな

ってか使用用途が微妙に違う気がする

819 = :

前者も後者もドメインオブジェクトにデータベースへのアクセスロジックを持っているという点では
アクティブレコードに類似してるけど、教科書(PofEAA)にならうならfindByIdメソッドは
新たに生成したWeblogのインスタンスを返すべき。
function findById($id) {
...
$data = mysql_fetch...
$weblog = new Weblog();
$weblog->setTitle($data['title']);
return $weblog;
}

820 = :

>>810のどっちかっていう話より、$obj->getTitle() が気になる
値を参照するだけならむしろ $obj->get('title') の方がわかりやすいし、場合によっては
配列使った方が楽できるような気もする
なんかこの辺の、Java風オブジェクト指向っぽいまわりくどい記述が好きになれない

821 = :

>>817

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

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

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

メソッド名が不自然かな?

822 = :

>>820
>値を参照するだけならむしろ $obj->get('title') の方がわかりやすいし

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

実は私も、それでいいんじゃないのかな?と思ったりしましたが
いろいろなフレームワークやOOPの説明を見ても
そういう実例がなかったので入れませんでした。

824 = :

get('title')だとエディタで補完できないし、スペル間違える可能性もあるよね

825 = :

>>824
__call() での自動呼び出しとかじゃないの?全部書いちゃうの?

今はどうなのか詳しくは知らないけど、RDBのフィールド名って大文字小文字を区別しないことがあって、キャメルケースは使いにくかったように思う。
だから、いちいち login_password <=> LoginPassword みたいな書き換えが起こるってことだけでJavaっぽいのは違和感があるなー

826 = :

>>824
補完したいならconst定義して
->get(BLOG::TITLE)
じゃない?

827 = :

> $obj->get('title')
引数に title2 を与えたら何が返ってくるんだ?
汎用的なコンテナじゃないのだから
部品へのインターフェイス、getTitle() を用意すべき

>>826
824は静的テストでチェックできるかどうかを言いたいんでしょ

828 = :

nullが返って来ればいいじゃん

829 = :

DAOが扱うデータの構造を知らないなんてことはないし、
ユーザ側が直接文字列を投げ込まないといけないようなメゾッドはなんかイマイチ感

830 = :

そもそも(特にPHPで実装されている)DAOがダサイっていう意見ではないのかと。
利用する側からしたら、補完機能付きエディタを使うんでなければ 'title' を 'tilte' なんて
書き間違えてあちゃーも getTitle() を getTilte() であちゃーも大して違いはない。
どっちでも例外吐こうと思えば吐けるし。
メソッド名の補完や静的チェックに関しては思想が違うとしか言いようがない。
ActiveRecordも流行の実装は自動的で動的なメソッド定義だし。そんなの静的チェック
なんて(むちゃくちゃ頑張らないと)できないんじゃ?

831 = :

シングルトンやサービスロケーターは結局のところグローバルじゃないかね、ケシカラン
とか
DIコンテナって結局GoFのストラテジーじゃないか、イランイラン
とか

OOPって偉い人同士でいつもそんな事言い合ってる、と俺印象。

832 = :

>>831
うむ、正しい
えらいひとがはまりやすいところ

でも分かってくると、OOPは大変強力なのも確か

833 = :

cakePHPとsymfonyの違いってどんなところ?

834 = :

こんなこと言う奴がいたらアホかと思うけどな
>DIコンテナって結局GoFのストラテジーじゃないか、イランイラン

836 = :

>>834
http://www.infoq.com/jp/news/2007/12/does-di-pay-off
http://kohari.org/2007/08/15/defending-dependency-injection/

837 = :

>>836
アホって言ってんのは >結局GoFのストラテジーじゃないか、イランイラン
の論理展開のことね。ストラテジーと似通う部分はあるにしても要らんっていうのは飛躍

838 = :

ああそこか。
雰囲気を伝えたかっただけで正確に書いたわけではないのだ。

839 = :

下らん議論してないで早く833の質問に答えろやゲリクソ野郎ども

840 = :

>>833
すみません、おもしろい話が思いつきません

842 = :

シンフォニー JAVA的
cake ROR的
CI PHP的

俺印象。どれも使った事は無い。

843 = :

的外れでしかも使ったことがないとかなんで書き込んだのか分からん。

844 = :

お前の意見を言えば

845 = :

Java的とかPHP的とか例えが狂ってるだろ
使ったことがないんじゃなくて使えないんだろ

846 = :

人の事いいから
お前の意見は

847 = :

下らんことで荒らすなカス共

848 = :

>>846
意見も何も>>842のやりたいことが意味不明だから
使ってないのに俺印象とか、何の印象だよ エスパーかよ
PHPとかJavaとかRoRとか何のカテゴライズだよ
なんでフレームワークと言語がごっちゃになってるんだよ
お前の意見は、意見は、って何が聞きたいんだよ

849 = :

>>848
~的は使った人から聞いての俺なりの印象。

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

それ以上やりたいならURL指定してくれ。そこでいくらでも粘着つき合ってやる。

850 = :

>>849
それどういうイメージ?


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について