【PHP】フレームワークについて語るスレ9【総合】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2007/12/11(火) 23:37:20ID:???http://pc11.2ch.net/test/read.cgi/php/1192604501/
0918nobodyさん
2008/02/06(水) 14:33:58ID:???その話は>891で全て終わっている。
知識からいっても論理性からいっても>891が正しい
google trendでPHPの各フレームワークを比較しているブログがあって、
面白そうなのでいまやってみたら、CakePHP > Symfony > Zend > ... という順番だった
やはりCakeがお手軽なのか。ただ、どれも頭打ちというかんじはする。
0919nobodyさん
2008/02/06(水) 14:51:36ID:???0920nobodyさん
2008/02/06(水) 14:55:27ID:???気づかないのかなぁ? この面白いコードに。
>>918
これのこと? だとしたら的外れなんだよね。
> PHPがクライアントサイドに実装される余地は夢物語じゃねえか。
俺はPHPがクライアントサイドに実装されるなんて一言も言ってないよ。
0921nobodyさん
2008/02/06(水) 15:02:57ID:???いま、コンポーネント指向のフレームワークを作っているのは実は過渡期で、
それらは最終的には言語仕様に取り込まれて、またページ指向に戻るんじゃないだろうか
なんかPHPでJavaみたいなコードを書いていると、すごく違和感があるんだよな
それはJavaでやれよ、みたいな
0922nobodyさん
2008/02/06(水) 15:06:23ID:???コンポーネント指向は別にページ指向と競合しない
0923nobodyさん
2008/02/06(水) 15:19:26ID:???|・∀・|ノ よい
./|__┐
/ 調子
""""""""""""""
.__
((ヽ|・∀・|ノ しょっと
|__| ))
| |
調子
"""""""""""""""""
フレームワークの話しようぜ!
0924nobodyさん
2008/02/06(水) 15:46:18ID:???この場合のfooには呼び名があって、「メタ構文変数」って言うんだ。(学校で習ったかな?)
覚えておいたほうが良い。Googleで調べよう。
>>893は自分でも分かっている通り、キミのコードにはバグがあって動かないんだ。
フォンノイマン型のコンピューターでは、キミのプログラムは動かないよ。(残念だったね)
894 :893:2008/02/06(水) 05:13:00 ID:???
>>893はちょっと勘違いで動かなかった。訂正版。
$sosuu = array(1,3,5,7);
for($i=1; $i<10; $i++) {
if(in_array($i, $sosuu)) {
foo($i);
}
}
↑このコードがエラー無しで動く言語、コンピューターはないんだ。
さあ、キミも働いて、本物のパソコンを買ってみよう!
0925nobodyさん
2008/02/06(水) 16:00:10ID:???http://www.rubyist.net/~matz/20071203.html
0927nobodyさん
2008/02/06(水) 16:11:47ID:???人間の傲慢さ、愚かさというものが、実によく理解できるインターネットですね。
0929nobodyさん
2008/02/06(水) 17:07:52ID:???>不可能ではないが、非現実的だ。
>
>サーバーサイドアプリといえば、PHPの独壇場。
>それがクライアントで動けばなおよい。
マジレス。
ウェブアプリは極論言えば標準出力と環境変数を受け取ることができる言語ならどんな言語でも作れる。
サーバーサイドJavaScriptも>>891が言ってる様に普通にあるし、最近ではJaxerなんてのも出てきてる。
非現実的とは言うほどではない。
それに、ウェブアプリのシェアは別にPHPの独壇場でもないし、
言語機能がJavaScriptよりも貧弱なPHPをクライアントサイドで使う意味もわからんのだが。
0930nobodyさん
2008/02/06(水) 17:09:48ID:???0931nobodyさん
2008/02/06(水) 17:12:40ID:2puW0wQcそれに答えたらちゃんと続きを書くんだろうな?
> ヒント1
> 以下のコード。言語は何でしょう?
PHP
> ヒント2
> GWTとQuickFormの共通点はなんでしょう?
しらね。
0933nobodyさん
2008/02/06(水) 21:31:27ID:???やっとまともなレスがついたかw
> > ヒント1
> > 以下のコード。言語は何でしょう?
>
> PHP
半分正解。答えは、PHPとJavaScript。
一見PHPコードのように見えるが、実はJavaScripコードとしても
解釈できるのだ。
(もちろんJavaScriptに無い関数はphp.jsなどで実装する)
> GWTとQuickFormの共通点はなんでしょう?
答えは、両方とも、別の言語からJavaScriptコードを生成するというところ。
GWTはJavaで書いたコードからJavaScriptコードを生成する。
QuickFormもPHPのライブラリで、PHPで入力チェック部分を書くと
それに対応するJavaScriptコードを生成してくれる。
0934nobodyさん
2008/02/06(水) 21:38:21ID:???どうでもいい所(fooとか)にこだわる虫けらがいるみたいなので。
サーバーサイドでのエラーチェックは必要不可欠。
いくらクライアントのJavaScriptでエラーチェックをしても
JavaScriptを回避して値を送ることは可能。
それじゃクライアントでエラーチェックをすることに意味が無いかというと
サーバーで処理して返すよりも、レスポンスが良い。サーバーの負荷が減る。
という利点がある。
理想を言えば両方書くのが良いわけだが、同じチェックコードを
違う言語で二回書くのは面倒すぎる。それを回避することができるものに
GWTやQuickFormがあるが、GWTはJava。QuickFormはチェックの仕方が
特殊でいけてないし面倒。
php.jsとうまく考えられた書き方をすることで、PHPコードを
そのままJavaScriptコードとして利用できる。
もちろんある種の制限はあるが、エラーチェック部分になら十分実用的だろう。
0935nobodyさん
2008/02/06(水) 21:49:29ID:???高校生か
0936nobodyさん
2008/02/06(水) 22:04:52ID:???要するに、PHP.js使って気をつけて書けばPHPでもJavaScriptでも使えるコードかけるよ!って言いたいのか。
まあ君がいいならそれも悪くないんじゃないかな。うん。
ただこのスレはフレームワークを語るスレだからさ、
これ以降君の自説の披露は別のところでやってもらえると助かるな。
0937nobodyさん
2008/02/06(水) 22:09:18ID:???動くかどうかじゃなくて、規格として。
0939nobodyさん
2008/02/06(水) 22:14:38ID:???普通変数名ってのは、アルファベットかアンダーバーで始まるものじゃない?
0940nobodyさん
2008/02/06(水) 22:15:57ID:???エラーチェック(バリデーション)のような定型的な処理は、
DIのような手法で、依存部分のみをYAMLやXMLなどで定義して、
テスト済みのライブラリを使うべきでは?
0941nobodyさん
2008/02/06(水) 22:17:26ID:???クライアントサイドでもサーバサイドでもいいけど、「素数のチェックで1が通って2が通らない」なんて
狂った検査じゃ意味ないだろw
0942nobodyさん
2008/02/06(水) 22:17:58ID:???マジでそれだけだと思ってるの?
もうやめとけや、その話題は。
0943nobodyさん
2008/02/06(水) 22:18:17ID:???なんでくどくどしく説明し出したんだこの馬鹿は
しかもクイズ形式でw
0944nobodyさん
2008/02/06(水) 22:21:07ID:???後からわかっていたといっても説得力皆無。
0945nobodyさん
2008/02/06(水) 22:26:53ID:???バリデーションは定型的な処理とはいわないんじゃないか?
このフィールドに、これこれの値が入るってのは
業務ごとに違うんだし。
それにいくつかのフィールドを総合的に見なければいけないような
複雑な条件処理の場合、YAMLやXMLで対応できるのか?
できるとしても大変そう。
0946nobodyさん
2008/02/06(水) 22:33:56ID:???http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide:About:Core_Language_Features
> アプリケーションで値を識別する名前として変数を使用します。変数の名前はあるルールに従って付けなくてはなりません。
> 変数の名前は識別子とも呼ばれます。
> JavaScript の識別子は必ずアルファベットかアンダースコア (_) かドル記号 ($) から始まらなくてはなりません。
って書いてあるから問題ないんじゃない? prototype.jsには$関数ってのもあるし。
0947nobodyさん
2008/02/06(水) 22:38:42ID:???次回からライブラリを使うことをお薦めする
また、複雑な条件処理ができてこそライブラリなので、それは全く問題ない。
PHPとJSでコード共用できるという話で思ったけど、
コピペコードは必ずしも生産性を上げない。
同じコードを書かないという原則からいえば、
検証条件だけを抜き出して、PHPもJSもそこからコードジェネレーションした方がいい
0948nobodyさん
2008/02/06(水) 22:42:38ID:???コピペする必要ないじゃない。
一つは、コード部分を、requireとかで読み込んだり、evalを使う。
一つは、そのファイル・コードをhtmlに埋め込んで渡す。
0949nobodyさん
2008/02/06(水) 22:42:44ID:???「JSでPHPを実装した」というたった一言の情報に
何一つ付け加えてねーじゃねえか
「1+1は2です。さて、1+1は?」
「???」
「柔軟な発想力があれば分かりますよ」
「…???(何言い出したんだこの人)」
「おやおや、分からないのですかぁ〜?」
「……(キモうぜぇ〜)」
「答えは、2ですよ」
( ゚д゚)( ゚д゚)( ゚д゚)キティガイ???
0950nobodyさん
2008/02/06(水) 22:46:04ID:???> for($i=1; $i<10; $i++) {
> if(in_array($i, $sosuu)) {
> foo($i);
> }
> }
へぇ。これってJavaScriptとしても実行できるのか。
言われてみればわかるけど、目からうろこ
0952nobodyさん
2008/02/06(水) 22:48:49ID:???・サーバサイドと(リッチ)クライアントサイドで同じ言語で記述できれば楽できる
・だからJavaScriptでPHP実装をすることに意味がある
ってこと?
ただここにいる多数の感覚では、わざわざPHPを実装せんでもなあ、と。
それなら、むしろサーバ側でJavaScriptで書ければイイじゃんって>>891とかで
言ってるし、確かにそれでいいと思う。なんで>>889はJavaScriptよりもPHPがいいと
思うんだろう。
現状でも、JavaScriptエンジン組み込んだApacheモジュール(mod_javascript?)とか
あっても不思議はなさそうだけど、誰か作ってないのかな?
もしくはコマンドラインインタプリタとか。それでCGIはできるな >>929 が言うように。
(Windowsはまったく知らないのであしからず)
>>889の為にまとめてみたが、この辺りにちゃんと答えないとただの馬鹿で終わり?
0953nobodyさん
2008/02/06(水) 22:49:09ID:???いや、プロジェクトは一つきりじゃないでしょ?
次のプロジェクトで新しいバリデーションコードを書くとき、
コードをコピペするのであれば、それは「よく似た違うコード」を生み出すことになる
結局、コードを主体に考えているからPHPとJS共用コードという発想になるので、
本質的な依存条件を考えた方がいいんじゃないの?という話
0957nobodyさん
2008/02/06(水) 22:51:35ID:???> 現状でも、JavaScriptエンジン組み込んだApacheモジュール(mod_javascript?)とか
> あっても不思議はなさそうだけど、誰か作ってないのかな?
はるか昔はあった。ネットスケープのサーバーかなにか。
最近また出てきたみたいだが、まだベータ版。
選択しにはならないと思うよ。
0959nobodyさん
2008/02/06(水) 22:52:39ID:???> 次のプロジェクトで新しいバリデーションコードを書くとき、
> コードをコピペするのであれば、それは「よく似た違うコード」を生み出すことになる
なんで? バリデーションコードをそのまま使えばいいじゃん。
0960nobodyさん
2008/02/06(水) 22:55:00ID:???うん、だからそれをするのがバリデータでしょ?
PHPでもJSでもそれを使えばいいんじゃないと言ってるわけ
0961nobodyさん
2008/02/06(水) 23:00:01ID:???だけど、俺が知る限りバリデータでは複雑なチェックはできないんだよね。
未入力チェックとか、正規表現の比較とか、数値の範囲とか、その程度。
ラジオボタンでAの値が選択されているときは、チェックなし。
Bの値が選択されているときはチェックあり。とかできる?
0962nobodyさん
2008/02/06(水) 23:02:35ID:???>956
いや、後から出てる反論のほとんどは>891で出てる。
それはいいんだけど、やはり実行に移さないことには価値がない
0963nobodyさん
2008/02/06(水) 23:04:45ID:???WEBアプリの入力チェックなんて、定番があっても良さそうなのに。
テンプレートエンジンと比べてえらい寂れようだ。フレームワークに結合されてしまってるのが多いからかな?
HTML_QuickFormも、結局入力がフォームデータ限定でしか使えないし、バリデータ部分だけ切り出せないのかな。
良いのがあるんだったらエロイひとお勧めして。
>>961
そういうのは多分設定ファイルでは無理で、バリデータクラスのサブクラスの指定メソッドに個別処理を書く、とかいう
対処になるんじゃないかなぁ、と勝手にライブラリ仕様を想像してみる。
>>960がどんなのをつかってるのかは知らないけど
0964nobodyさん
2008/02/06(水) 23:05:35ID:???先に(PHPでもJSでも動く)コード書いた奴の勝ちって事だな。
0965nobodyさん
2008/02/06(水) 23:06:59ID:???> そういうのは多分設定ファイルでは無理で、バリデータクラスのサブクラスの指定メソッドに個別処理を書く、とかいう
> 対処になるんじゃないかなぁ、と勝手にライブラリ仕様を想像してみる。
で、そういうメソッドを書くとき、
PHPでもJavaScriptでも動くコードを
書けば楽って事でしょ?彼が言いたいのは。
0966nobodyさん
2008/02/06(水) 23:08:08ID:???0967nobodyさん
2008/02/06(水) 23:09:18ID:???素でやると物凄く不自由なコードになってそうだw
foreachやsprintfが使えないPHPなんて本当に何のメリットもない糞言語だろ。
あと、文字列結合が素直には出来なさそう?
本当に限定された局面のみ有効になりそうだ。PHP.jsってそういうのはうまくやってくれるの?
0968nobodyさん
2008/02/06(水) 23:11:56ID:???このリストを見る限り、sprintfは使えるようだな。
0969nobodyさん
2008/02/06(水) 23:12:12ID:???PHPとJavaScriptではオブジェクトの仕組みとかお互い全然違うから、
もしコード共有しようとしたらオブジェクト指向できなくなるし、いちいち二つの環境で確認するのめんどくさい。
YAMLとかでヴァリデーションの条件書いて各実装でそれを実現するのがよっぽどスマートだと思うんだけどな。
少なくともサーバーサイドJavaScriptよりもさらに現実味がないと思うよ俺は。
0971nobodyさん
2008/02/06(水) 23:28:42ID:???PHP.jsはPHPの関数をjavascriptに移植しただけ。
JavaScriptでのPHP実装とかじゃない
0972nobodyさん
2008/02/06(水) 23:29:05ID:???0973nobodyさん
2008/02/06(水) 23:32:41ID:???俺が使ったことのあるのはCake, CodeIgniter, Piece_Rightだけど、
その程度だったら問題ないし、追加の検証メソッドもサポートしてる。
しかし、やはりコード共用をやるなら、最終的にはコード生成に落ち着くような気がする。
結果的にその方が楽だと思う(例として挙がっているGWTもそういうことだし)。
後は、「実際にやってみて」としかいいようがない。
0974nobodyさん
2008/02/06(水) 23:44:25ID:???PHPとして動くようなJavascriptを書けばいいんでしょ?
それはともかく、同じECMAScript系だとFlex/ColdFusionもある
ActionScriptのフレームワークも揃いつつあるし、
ECMAScriptでサーバサイド・モジュールというのは十分現実的
0976nobodyさん
2008/02/06(水) 23:53:57ID:???> PHPとして動くようなJavascriptを書けばいいんでしょ?
なかなか難しいことを言ってるな。
JavaScriptの場合、オブジェクト指向がデフォだから、
array.push("1"); とか str.length とか良くある関数が使えない。
また、PHPの制約により、$から始まる変数名じゃないといけないし。
0977nobodyさん
2008/02/06(水) 23:54:33ID:???0978nobodyさん
2008/02/07(木) 00:16:59ID:???サーバーサイド=PHPでプログラミング…(1)
クライアントサイド=JavaScriptでプログラミング…(2)
【php.jsを使ったプログラミング作業】
サーバーサイド=PHPでプログラミング…(3)
クライアントサイド=PHPでプログラミングしたコード(3)をphp.jsで動かす。…(4)
(4)php.jsを使うことによって、(2)の手間が省けるという話ですか?
=バリデータくらいなら作れるのではないか?と。
PHPがJavaScriptの代替になるか?
=php.jsをテストしてみて、どの程度PHPのコードが動くものか確認しなければなりませんね。
0979nobodyさん
2008/02/07(木) 00:27:55ID:???単なる関数名のラッパーか?
php.js の検索結果 約 770,000 件
http://www.google.co.jp/search?q=php.js
PHPで使える便利関数をJavaScriptでも使えるようにする「php.js」 2008年02月05日
http://phpspot.org/blog/archives/2008/02/phpjavascriptph.html
>php.js をインクルードすれば、次のPHP関数と同名かつ同機能を使うことが出来ます。
>JavaScriptに慣れ親しみたいと思っているPHPプログラマの方は、これを元に、JavaScriptに移行していくのも手かもしれませんね。
PHPで書いたバリデーターに、PHPの関数が入っていても、コピペでJavaScriptで使える。
これを手動ではなくて、自動でやれば、コードジェネレーターを使うみたいに楽ができるよね?という話ですか。
そのコードジェネレーターは、もう誰か作ってくれてるの?
0980nobodyさん
2008/02/07(木) 00:50:45ID:???>半分正解。答えは、PHPとJavaScript。
http://jp.youtube.com/watch?v=yOS4GJf60gw
「はい!ここ、テストに出ま〜す♪」
>>975
http://www.google.co.jp/search?q=Jaxer
Jaxer の検索結果 約 222,000 件
0981nobodyさん
2008/02/07(木) 01:22:02ID:???0982nobodyさん
2008/02/07(木) 02:08:52ID:???JSでPHP関数のクローンを使うという発想が気持ち悪い
PHPは少なくとも「積極的に書きたい言語」ではないし
0983nobodyさん
2008/02/07(木) 02:18:25ID:???一回書こうとしたことあったけど
バリデーションて複数の層と、それなりに密接に関わるから
だんだんそれ自体がミニFW化していくんだよね
コントローラでは判定とaction分岐、
ビューではFormコンポーネントや値、エラーメッセージの生成や管理nado
なかなかキレイにまとめるのはむずかしす
0984nobodyさん
2008/02/07(木) 02:26:50ID:???気になるのは
ビデオチュートリアルでhello worldなんかを作ってるあたり。
そこはブログっぽいのとか作っとかなきゃダメだろ。
そこここにセンスのなさを感じて
ださいコードや構造になっているんじゃないかと危惧してしまう
0985nobodyさん
2008/02/07(木) 02:44:18ID:???ヒゲチェンはcakephpで作られてるらしい
0986nobodyさん
2008/02/07(木) 04:14:13ID:???しかし、CIの普及も十分とは言えないのに、なぜ派生プロジェクトが…
0987nobodyさん
2008/02/07(木) 04:25:36ID:???0988nobodyさん
2008/02/07(木) 07:29:28ID:???phpでもautoloadに頼らず
自分でinclude_once()するのが一番いいんじゃね?
0989nobodyさん
2008/02/07(木) 17:18:10ID:???StringとかIntがないのって何なの?
頭おかしいの?
0990nobodyさん
2008/02/07(木) 17:54:08ID:???特におかしいことではありません。
0991nobodyさん
2008/02/07(木) 20:05:31ID:???そもそもarrayのtype hintingすら5.1っつー中途半端なタイミングで入れられたんだ
大絶賛中言語PHPではIntegerのタイプヒンティング入れた日にゃ
初心者がリクエストパラメータそのまま引数に投げて
型が違うよっておこられるんだけどうわーんな惨状を回避するためさ、嘘だけど
実際でもstringとintegerの区別に関しては
何故か寛容なPHPだからあながち100%嘘でもなさそうなのがPHPの凄い所
0992nobodyさん
2008/02/07(木) 20:17:54ID:???0993nobodyさん
2008/02/07(木) 20:29:22ID:???少し前、ちょうどそんな感じでphp.internalがフレームしてた。(なんかまた再燃してるっぽい)
除算しただけでいつの間にかintがfloatになってた、みたいな罠もあるので
厳密なスカラーのタイプヒンティングは嬉しくないかも。
int, float, 数値文字列まで受け入れる「numeric」なら妥協できるようなやっぱりキモいような。
まあ、外部から来るスカラーはバリデーション通しとけってことで。
0994nobodyさん
2008/02/07(木) 20:49:26ID:???ハマっちゃうと慣れてない人は良く分からないだろうな
そういう意味ではちょっとでも型違うとエラーになる方が
分かりやすいしハマりにくい
さすがMatzにDISられる言語だけある
0995nobodyさん
2008/02/07(木) 20:53:13ID:???0996nobodyさん
2008/02/07(木) 21:49:13ID:???そもそもruby界隈だと型チェックでduck typing殺す意義が疑問視されそうだ
0997nobodyさん
2008/02/08(金) 06:40:44ID:???でpythonみたいに対話的に使えるの初めて知った
Ruby脂肪www
0998nobodyさん
2008/02/08(金) 08:07:20ID:???クライアントサイドのJavaScriptでも動くようにすればPHP最強。
0999nobodyさん
2008/02/08(金) 09:31:46ID:???1000nobodyさん
2008/02/08(金) 09:43:30ID:???> for($i=1; $i<10; $i++) {
> if(in_array($i, $sosuu)) {
> foo($i);
> }
> }
へぇ。これってJavaScriptとしても実行できるのか。
言われてみればわかるけど、目からうろこ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。