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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/12/11(火) 23:37:20ID:???
前スレ
http://pc11.2ch.net/test/read.cgi/php/1192604501/
0023nobodyさん2007/12/12(水) 23:41:21ID:???
>>22 は褒めすぎで偏ってる気もするが。
ただ、PHPのソースで敢えてforeach を使わず

for($i=0; $i<count($ar); $i++){
$ar[$i] でほげほげ
}

て記述が多いのはなんでだろう、って思う事は多い。使う人間の種類が違うのかも。
(もちろん、パフォーマンスが若干いいんだろうが、それよりも二次元くらいになると読みにくくないか?)
0024222007/12/12(水) 23:53:47ID:???
そうかぁ?Perlですら正規表現は =~ だしなぁ。
なんかスクリプト言語ならでは、ってものがないんだよな。
まぁ<? ?>ってやるだけでHTMLの中に自由に書けるのは大きいけどさ。
0025nobodyさん2007/12/13(木) 00:05:52ID:???
まあもともと出来た経緯だったり思想が全然違うしな
PersonalHomePageだし
0026nobodyさん2007/12/13(木) 00:10:16ID:???
>>24
そのHTMLの中に自由にかける、ていうのはMVCフレームワーク的にかなり否定されつつある利点だけどなw
もうその辺は迷走中だろ。

いいところをあげるなら、サーバにアップするだけでそれなりに動く、HTTPヘッダを勝手に吐いてくれるので
何も考えなくてもエラーが画面で確認できる、POST、GET、COOKIE、SESSION、DBアクセスがビルトイン、
こんなところが「お手軽感」をかろうじて与えてくれる。
0027nobodyさん2007/12/13(木) 01:00:36ID:???
>>26 であげられた「利点」を見てみると、PHPがフレームワークだ、っていうのがなんとなく理解できた。
つまり言語として欠点をあげつらうのは間違いだったんだ!って思った。
0028nobodyさん2007/12/13(木) 01:30:26ID:???
いまさら何を
PHPはWeb開発言語として誕生したことをしらないのか?
PHP=劣化フレームワーク

HTMLを拡張したと考えるぐらいが丁度いい
実地で使えることを優先してしまったので、
言語としての綺麗さとかポリシーとか
そういうのは二の次になってるよね

ま、所詮言語は道具だから、何でも良いんだけど
住めば都と言うし
0029nobodyさん2007/12/13(木) 01:37:08ID:???
こういうこと言い出したら技術者としてはそれなりになった証拠だがビジネスとしては使えないな
0030nobodyさん2007/12/13(木) 01:44:26ID:???
>>23
配列の作り方によってはforeachだと予期しない順番になるから。
0031nobodyさん2007/12/13(木) 01:48:09ID:???
つまりperl仕えと
0032nobodyさん2007/12/13(木) 01:48:39ID:???
↑使え
0033nobodyさん2007/12/13(木) 01:49:09ID:???
>>30
それはつまり空の配列から、配列のインデックスを直に(int値で)指定しながら配列を構築する処理があるって事?
その時点でもうスクリプティングの方法論が違う様な気はする。
0034nobodyさん2007/12/13(木) 01:51:40ID:???
今更perlなんて使う価値ないだろ
0035nobodyさん2007/12/13(木) 01:59:26ID:???
>>34
perlは(pythonは知りませんが)Windowsでも普通に使えるすてきなスクリプト言語ですが何か。
JavaScript覚えてもこんどは*nix系でシェル処理できないしな。

いや、もちろんPHPでもやろうと思えばできますが。そこは好みじゃないかな。
0036nobodyさん2007/12/13(木) 02:48:22ID:???
いや今更Perlはないわ。RubyかPythonだろ。
0037nobodyさん2007/12/13(木) 02:59:49ID:???
って結局PHPじゃないのかよwww
Rubyは微妙すぎる・・・定番のバイナリを決めてくれw
0038nobodyさん2007/12/13(木) 09:20:33ID:???
保守   Perl厨Ruby厨は自分のスレへカエリ

【PHP】フレームワークについて語るスレ9【総合】
http://pc11.2ch.net/test/read.cgi/php/1197383840/l50
0039nobodyさん2007/12/13(木) 10:36:20ID:???
>>35
あー。たしかに最近PerlはCGIとして使うと言うよりも
ただのスクリプト言語として使うようになったかも。
何かのバッチ的作業をするものとしてね。

JavaScript = HTML(クライアント側ブラウザ用言語)
Perl = クライアント用作業自動化言語
PHP = ウェブサービス用言語
Java = 超大規模ウェブサービス用言語、携帯アプリ


Ruby = ポストPHPをねらってがんばってください。数年後に普及しているといいですね。
Python = 一部の人だけ使ってください。
0040nobodyさん2007/12/13(木) 11:00:30ID:???
>>39
バッチも俺はPHPで書くなぁ。
ここ最近Perl触ってないけど、Perlの案件てあるの?
いや、まぁ、あるとこには有るだろうけど。
0041nobodyさん2007/12/13(木) 12:42:17ID:???
たぶん今でもperlの知識は必要とされてる筈。
phpを全面に出してるとこは、なぜか少ない。
0042222007/12/13(木) 12:47:55ID:???
俺はバッチもrubyだw
ツール類も全部。rakeの存在が大きい。
ウェブではPHPかjavaだが。
0043nobodyさん2007/12/13(木) 14:53:48ID:???
現在ではオープンソースのウェブアプリで
Perlを使っていることは驚くほど少ない。

Perlで作ったものってのはインターネットが
普及しだしたころに個人が作った
簡易○○システム的な感覚だな。
0044nobodyさん2007/12/13(木) 15:25:20ID:???
オープンソースの開発言語の統計を
見た記憶があるんだが
どこだったかな?
0045nobodyさん2007/12/13(木) 17:38:09ID:???
噴飯物の人気言語リストってのなら見たことあるなぁ
JavaScriptとAjaxが別の物として並んでる奴
0046nobodyさん2007/12/13(木) 21:22:36ID:???
pythonとやらを使ってみたが
str = 'hoge'
str[0] = 'm'
これでエラーが出るとかありえない
phpの柔軟さを見習って欲しい
0047nobodyさん2007/12/13(木) 21:24:16ID:???
柔軟さって言うか、配列くらいは初期化しようよ。
0048nobodyさん2007/12/13(木) 21:39:46ID:???
PHPは変数スコープがレキシカルじゃないところが致命的にダメ。
0049nobodyさん2007/12/13(木) 22:12:40ID:???
あの腐れスコープはどの言語からパクったんだろうか。
0050nobodyさん2007/12/13(木) 22:32:27ID:???
>>47
>>46はhoge -> mogeにできないって意味じゃないのかな?
pythonしらんけど
0051nobodyさん2007/12/13(木) 22:37:49ID:???
>>50
そだよ
pythonでは文字列が変更できない
スクリプト言語のくせにこんなとこだけCっぽい
0052nobodyさん2007/12/13(木) 22:43:43ID:???
> スクリプト言語のくせにこんなとこだけCっぽい

え?
0053502007/12/13(木) 22:47:43ID:???
>>51
C言語やったことないっしょ?w
char str[] = "hoge";
str[0] = 'm';
こんなことできるお。
0054nobodyさん2007/12/13(木) 22:50:42ID:???
え?そうなんだ・・・
じゃあなんでpythonはこんな実装にしたんだろう
0055nobodyさん2007/12/13(木) 23:00:08ID:???
mutableだったらdictionaryのkeyとして使えないから。
0056nobodyさん2007/12/13(木) 23:29:34ID:???
>>53
俺はむしろそんなことができてしまう方が嫌。
0057nobodyさん2007/12/13(木) 23:35:02ID:???
てか、Cの場合は只の配列だから。
別に特別な型でも特別な操作でもない。

逆にそんなことができるスクリプト言語っていうのは、敢えて実装してるんだろうが。
perl は $str と $str[0] はなんの関連もないし。できるっていうのはRubyの事か?
0058nobodyさん2007/12/13(木) 23:39:58ID:???
ここは言語スレじゃねぇよ。読解家。
0059nobodyさん2007/12/13(木) 23:46:48ID:???
>>57
Rubyは知らないけどPHPはできる。
String型になっているのに、なんでそんな仕様にしたんだろう。
0060nobodyさん2007/12/13(木) 23:48:50ID:???
>>59
ヒント: ただのラッパー

・・・が真実かどうかは知らないw
0061nobodyさん2007/12/13(木) 23:52:06ID:???
試しに

$str = "hoge";
var_dump($str[4]);

ってやってみた。

string(1) " " ← 中身は"\0"
っていうのを期待したが

Uninitialized string offset: 4
って怒られたw

やっぱり敢えて実装してるのかな?
0062nobodyさん2007/12/14(金) 00:03:13ID:???
>>58
じゃあフレームワークの話振ってよ。

というか、言語の特性も知らずにフレームワークの話ができるか、って言う気もする。
Rails は初めPHPで書かれようとしてたってのは今更な話だけど。

PHPはどれだけJavaに近づけるかって世界だからもうね、ていう倦怠感が読み取れて
この流れは嫌いじゃ無いぞ。
スクリプト言語論議はむしろ根本じゃないか・・・ていうのは言い過ぎかな。
0063502007/12/14(金) 00:07:35ID:???
>>61
それは内部構造をかえしてるわけじゃないとおもうけどね。
てか文字列なんて内部じゃ配列でしょ。
最後がNULLかどうかは置いておいて。


0064nobodyさん2007/12/14(金) 00:16:06ID:???
>>62
Java厨発見
0065nobodyさん2007/12/14(金) 00:23:00ID:???
本当に何でこんな実装を組み込んだんだろ。
この機能をフルで使っているとスクリプトとか、あんまり触りたくないな。
特にマルチバイト絡むとひどいことになりそうだ。

そのくせ、array_slice とか foreach とか使えないわけで、またPHPの半端な仕様が
印象に残ってしまったじゃないか。
0066nobodyさん2007/12/14(金) 00:26:25ID:???
> 本当に何でこんな実装を組み込んだんだろ。

それはPHPでは禁句だ。
0067nobodyさん2007/12/14(金) 00:41:57ID:???
本当に使えないか試してみた。
foreach がダメなら for で。

$str = "日本語";

for($i=0; $i<strlen($str); $i++){
    var_dump($str[$i]);
}
結果 ----------------------
string(1) "・
string(1) "・
string(1) "・"
string(1) "・
string(1) "・
string(1) "ャ"
string(1) "・
string(1) "ェ"
string(1) "・
---------------------------

ini_set('mbstring.internal_encoding', 'UTF-8');
for($i=0; $i<mb_strlen($str); $i++){
    var_dump($str[$i]);
}
結果 ----------------------
string(1) "・
string(1) "・
string(1) "・"
---------------------------

・・・本当につかえねー。
0068nobodyさん2007/12/14(金) 01:16:09ID:???
PHP使えないから使えないんだよ
0069nobodyさん2007/12/14(金) 02:12:50ID:???
>>61
やりたいことがいまいち分からないんだが
今時\0を終端文字にしてる方が怖くね?
バイナリデータ入れられないじゃん
0070nobodyさん2007/12/14(金) 02:19:16ID:???
PHPも文字列が占有しているメモリを直接書き換えることなんてできないだろ?
だから
str = 'hoge'
str[0] = 'm'
でエラーになるpythonと同じじゃね?
エラーになる=Cっぽいんじゃなくて
エラーにならないのはCだけと言うべきでは?
0071nobodyさん2007/12/14(金) 02:30:25ID:???
>>69
「今時」のC ( ++ でも # でもない ) は違うのか?それは知らなかった

>>70
いや、PHPとRubyでは出来る、っていうのが前提の流れだと思うんだが
0072nobodyさん2007/12/14(金) 02:35:42ID:???
>>71
Cは歴史ある言語だからともかく
スクリプト言語で\0を終端文字にしてる実装なんてあるの?
0073nobodyさん2007/12/14(金) 02:41:52ID:???
そういう意味か。了解
ただ、>>61は「Cの(シンプルすぎる)ラッパ」の実験だと思うよ

俺もPHPのソースなんて読んだことないし。読める気もあんまりしないしw
0074nobodyさん2007/12/14(金) 02:55:57ID:???
どうしてアンチPHPが多いのか
0075nobodyさん2007/12/14(金) 03:02:11ID:???
どうしてphpってこれできないの?

new Hoge()->someMethod();

わざわざラッパかぶせないと出来ないんだねえ
function ref(&$object){ return $object; }
ref( new Hoge())->someMethod();
0076nobodyさん2007/12/14(金) 03:18:33ID:???
別にアンチPHPじゃないが、PHPの役割は終ったんじゃないか?
誰にでも使える、viewに親和性の高い言語として生まれたわけだが
1)CMSの普及により誰もがプログラムを書くという状況が終った
2)汎用的な言語としては、PHPは中途半端。そもそも目的が違う

ここから導かれる結論としては
1)unix的なシステムとの親和性が高い言語が重視される
2)rubyか、pythonか?いずれにしろPHPではない
0077nobodyさん2007/12/14(金) 03:43:42ID:???
ギーク的には終わったようなもんだろうけど、
少なくともPHPの出番はあと五年はある
それにPHP6になって盛り返すかもしれないし
0078nobodyさん2007/12/14(金) 03:47:14ID:???
PHP6の盛り返しはないと思うなぁ
その出自からviewに結びつきすぎてるから
汎用性において自由な他の言語に遅れをとっている
というか、完全に生まれ変わらない限り同じ土俵には乗ることができない
それはPHPという言語の消滅を意味する
0079nobodyさん2007/12/14(金) 03:48:21ID:???
やっぱ、PHPは良くも悪くもテンプレートだったんだよ
0080nobodyさん2007/12/14(金) 03:53:46ID:???
パーソナルホームページだっけ?
そんなださい名前の言語がここまで隆盛を極めたこと自体が、
ほとんど奇跡的な、
あるニッチに需要が偶然一致した時にのみ起きた出来事だったんだよ。
0081nobodyさん2007/12/14(金) 04:10:19ID:???
そういやrubyにinterfaceてないよな?
rubyの人はどうしてんだろ
0082nobodyさん2007/12/14(金) 04:15:08ID:???
PHPでもinterface使うことなんてそんなにないだろ常考
0083nobodyさん2007/12/14(金) 04:17:29ID:???
いや普通にあるだろ。いくらphpだからって
どんだけ適当にやってんだよ
0084nobodyさん2007/12/14(金) 04:19:47ID:???
Java的使い方しない限りないだろ
interface使う=PHPの領域から若干逸脱している
0085nobodyさん2007/12/14(金) 04:21:09ID:???
PHPがウェブ以外の分野に進出することはあり得ないが、ウェブでは当分優勢だと思うよ。
誰でも覚えられる、誰が書いてもそこそこのスピードで動く、mod_phpはインストールも運用も簡単。だから、PHP技術者は掃いて捨てるほどいる。
これらの強力なメリットの前では、冗長な記述の強制、バグ発見のしにくさとか、要するにダサイ言語仕様というデメリットは小さいこと。
0086nobodyさん2007/12/14(金) 04:22:23ID:???
えー…
oopしない人とかそういうわけじゃないよね?
0087862007/12/14(金) 04:22:57ID:???
>>84
0088nobodyさん2007/12/14(金) 04:25:39ID:???
インターフェイスは要らんよな。ウェブでそんな複雑な構成のクラスなんて必要ない。
PHP5の新機能で有効なのは例外と、foreachでリファレンスを渡せるようになったことくらい。
後は不要な機能ばかり。
0089nobodyさん2007/12/14(金) 04:29:18ID:???
マジで言ってるのか
俺には理解できん
0090nobodyさん2007/12/14(金) 04:46:54ID:???
そんなしょうもない機能付けるより、array()にショートカットを付けるとか、いっそE4XやYMLを組み込んで、冗長な記述を防げるようにするとか。
名前空間とかパッケージの仕組みを導入するとか、fopen()みたいなのが例外を吐けるようにするスイッチを用意するとか。
低機能な標準DBドライバ、バグだらけのPDOの改善とか。
他のスクリプト言語にあってPHPにない機能は山ほどあるのにな。よりによってJavaのマネをしてみるっていうのが何を考えてるのやら。
0091nobodyさん2007/12/14(金) 04:57:24ID:???
HTML的な簡単さのインパクトがあまりにも強かったから
言語の中途半端さまで許容されすぎたんだよ
そのインパクトの効用がそれほど重視されなくなった今
揺り戻しが必ず来るだろう
0092nobodyさん2007/12/14(金) 07:34:21ID:???
Javaとかは言語的には完成度が高いが、いざWebで使うとなると言語仕様以外の部分が足を引っ張るからな。
簡単に環境を構築できないってのは致命的。
大規模には向いてもお手軽にできないんじゃ一般的に普及するはずがない。
実際Java使われている所が一般(アマ)では皆無、銀行や金融系で多いというのがそれを物語っている。
普及するにはお手軽ってのは重要な要素だ。

PHPはJavaみたいな事にするより、もっと簡単さを押し出した進化をするべき。
0093nobodyさん2007/12/14(金) 09:25:43ID:???
>>92
>簡単に環境を構築できない
どこが大変なんだ?
0094nobodyさん2007/12/14(金) 12:23:56ID:???
まーPHPに比べたら何倍も大変でしょ
今はapache -> tomcatの連携もだいぶ楽になったけど。
0095nobodyさん2007/12/14(金) 13:01:00ID:???
なにかと再コンパイルが必要なphpのほうがよっぽどめんどくさいんだけど。
パッケージしか使わない人には関係ないのかな?
0096nobodyさん2007/12/14(金) 13:26:58ID:???
やっぱりPHPって人気者だな
0097nobodyさん2007/12/14(金) 14:44:12ID:???
嫌でも使わないといけない人がたくさんいるというだけの話
なので愚痴がおおい
0098nobodyさん2007/12/14(金) 14:59:53ID:???
PHPで、文字列と数値0の比較は等価になるようです。
http://phpspot.org/blog/archives/2007/12/php0.html
こんなの初めて知った
null文字列と0が等価と思ったら
普通の文字列とも等価になるのかよ
PHPヒドス
0099nobodyさん2007/12/14(金) 15:12:06ID:???
これただのミスじゃないの?
にしても酷いなこりゃ
0100nobodyさん2007/12/14(金) 15:16:30ID:???
仕様です
0101nobodyさん2007/12/14(金) 15:51:27ID:???
==と===の違いを知らない奴ら発見w
そんなことも知らなかったほうがすごい。
変数に型指定しなくていいことからわかるだろ、普通。
0102nobodyさん2007/12/14(金) 15:55:58ID:???
>>101
===はもちろん知ってるが
やっぱりおかしいだろ
0103nobodyさん2007/12/14(金) 16:09:12ID:???
>>102
自動的に型変換するんだからおかしくないだろ
0104nobodyさん2007/12/14(金) 16:23:21ID:???
自動変換ったって
ヌルストリング→0
何らかの文字→1
になるのが普通の感覚じゃね?
0105nobodyさん2007/12/14(金) 16:48:46ID:???
てゆーか、==で比較してる奴なんているの?
0106nobodyさん2007/12/14(金) 16:55:03ID:???
>>105
結構いる。マニュアルもろくに読まないタイプ。

しかしPHPの暗黙の型変換は糞仕様だからハマリやすいな。
0107nobodyさん2007/12/14(金) 20:00:04ID:???
みんなもういいかげんphpなんかやめてioLanguageやろうぜ!

http://www.iolanguage.com/about/
0108nobodyさん2007/12/14(金) 22:10:43ID:???
いや、俺は普通に使ってる。 > ==
ちゃんとわかってて使う分にはいいんじゃないの?
っていうか、全部===や!==ってっやてるわけ?
0109nobodyさん2007/12/14(金) 22:20:12ID:???
>>108
俺はそう。
あぶかっしくて比較なんか出来ない。
つか、比較ちゃうやん。
01101082007/12/14(金) 22:23:14ID:???
>>98
文字列と0が常に等価となる訳でもない。
(int)"123abc"==123 になる。

サニタイジングしてれば不意に文字列と数値を比較するときなんてそうそうないけどなぁ。
===や!==を使うときは関数が0やfalseやnullを返す可能性があるときぐらいかな。
0111nobodyさん2007/12/15(土) 01:35:35ID:???
・比較演算子を使う時、両辺のどちらかが数値の場合には暗黙で数値に変換される
・上記の変換で文字列が数値変換される時のルールが
 「数値と解釈できる文字列から始まっていれば」その数値になり、「その他の場合」は0になる

"str" == 0 // true, "str" -> 0
"123str" == 123 // true, "123str" -> 123
"str123" == 123 // false, "str123" -> 0
"1.0str" == 1 // true, "1.0str" -> 1

・数値と文字列を比較すると暗黙で変換されるのでそうしないことを心掛ける
・想定する型比較と違う型が来る可能性がある場合はキャストしておく
のが重要、っていうか普通に書いてる分には困らない

あとこの型変換の仕様だけを出してきて「PHPの言語仕様は糞だ」
っていう奴はPHPより糞
PHPにはもっと言語仕様が糞なところはいっぱいある、
それはPHPユーザが一番知っている
0112nobodyさん2007/12/15(土) 03:17:51ID:???
"123str" -> 123
こんな中途半端な変換迷惑なだけです(><)
0113nobodyさん2007/12/15(土) 05:36:41ID:???
PHPの型変換はやっぱ変だよねえ。もっともnumber型とstring型で、型宣言できるようにした方がバグの混入が防げて結局効率的だと思うね。intとかfloatとか細かく分ける必要はないけど。
01141082007/12/15(土) 06:24:55ID:???
型宣言は今更のような気もするが...、まぁ動的型変換はなくてもいいかな。
宣言により型が決っちまうとfopenとかstrpos等、失敗したときなんかにfalse(boolean)を
返してしまうものは、上で誰かが書いてたけどそれこそ例外を投げてくれないといけなくなる。
そこまで求めるのなら他の言語へいった方が早くね?
0115nobodyさん2007/12/15(土) 06:31:39ID:???
そもそも複雑なプログラムを組むのにPHPを使うのが間違いなんじゃないの。
手早く簡素なコード組むためのもんだろ、PHPって。
0116nobodyさん2007/12/15(土) 07:26:06ID:???
>>112

CSS用だろ。
0117nobodyさん2007/12/15(土) 13:43:35ID:???
スキル低いウェブデザイナーが使う言語だからね。
使い続けていくうちにノウハウたまってくると、Javaでミドルウェア化してしまった方が便利。
PHPでの再利用なんてゴミだし、運用メンテが面倒。
0118nobodyさん2007/12/15(土) 16:49:00ID:???
>>53
嘘付くな。
固定文字列を変更できるかどうかは実装依存。
0119nobodyさん2007/12/15(土) 17:28:36ID:???
どっから固定文字列の話が出てきたんだ?
0120nobodyさん2007/12/15(土) 17:32:00ID:???
> char str[] = "hoge";

どう見ても文字列定数です
0121nobodyさん2007/12/15(土) 19:31:34ID:???
実装依存だけど、むしろできない方が多いんじゃないかな
0122nobodyさん2007/12/15(土) 19:44:39ID:???
そうなの?Cはほとんど知らないけど、うちのDebianに入ってたgccでは出来た。

#include <stdio.h>

int main()
{
char str[] = "hoge";
str[0] = 'm';
printf("%s\n", str);
}
■ このスレッドは過去ログ倉庫に格納されています