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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/12/11(火) 23:37:20ID:???
前スレ
http://pc11.2ch.net/test/read.cgi/php/1192604501/
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);
}
0123nobodyさん2007/12/15(土) 19:48:39ID:???
おまえら、C FAQ の1.32くらい読んどけ
0124nobodyさん2007/12/15(土) 20:16:47ID:???
オープンソースで配布するんでもなけりゃ、バイナリになってしまえば・・・
0125nobodyさん2007/12/15(土) 20:25:06ID:???
試してみたが、上のgccに加え、bcc55(bcc32.exe), VC++2005(cl.exe)でもできたな。
仕様上は不定かもしれんが、できない方が多い、かどうかは別かも。

というか、間違いなくスレ違い。以降は自重する。
0126nobodyさん2007/12/15(土) 20:40:00ID:???
ここはPHP一筋の人だけのスレです
他言語も使ってる意志の弱い奴は去れ
0127nobodyさん2007/12/15(土) 21:36:19ID:???
>>126
勝手にそんなこと決めんな。
つか、他の言語やってない奴なんてほとんどいないだろ。
それに他の言語の知識は何かと役立つ。
0128nobodyさん2007/12/15(土) 21:48:41ID:???
今のところ実装が一つだけのPHPは幸せだな・・・と思いきや言語仕様も無いようなもんかw
まあそれはRubyも同じだけど
(Windows版で商用につかってる超マイノリティは無視だ)
0129nobodyさん2007/12/15(土) 21:58:55ID:???
>>127
>それに他の言語の知識は何かと役立つ。
これは他のスレでやるべきだろw
スレタイを読んでからレスはするべきだと思うわ。
0130nobodyさん2007/12/16(日) 00:52:29ID:???
ワイズノットが民事再生手続開始
http://slashdot.jp/articles/07/12/15/1414237.shtml
ワイズノット脂肪でPHPも連鎖的に脂肪www
0131質問2007/12/16(日) 01:48:45ID:6S6s0OEC
[1]よく使うPHPフレームワークは?
[2]昔使っていたPHPフレームワークは?
[3]PHP4系とPHP5系どっちらを多く使う?
[4]テンプレートシステムを使うとしたら何使う?
[5]IDEとかは使う?
[6]よく使うRDBは?
[7]PHP以外でWEBアプリを作るとしたら何を使う?
0132nobodyさん2007/12/16(日) 02:11:10ID:???
>>131
叩かれるの承知で書いてみる。
1.俺俺 今後はZendFW?
2.俺俺
3.PHP4 漸く5に移行中。
4.Smarty
5.PDTなんだがVs.Phpを使ってみたい。
6.PostgreSQL
7.Mono(ASP.NET C#)
0133nobodyさん2007/12/16(日) 02:46:26ID:???
俺も便乗してみる
[1]cakephp
[2]ethna+syrup+かなりのオレオレ改造(使用頻度は低いけどまだ使う事はあると思う)
[3]しがらみが無ければ5系だけど、安い案件ばかりなので選ぶ自由がほぼない
[4]Smarty
[5]PDT
[6]PostgreSQL
[7]RubyとPythonが興味あるけどどっちもほとんどいじってない(;´Д`)
0134nobodyさん2007/12/16(日) 06:12:58ID:???
>>98
それ少しスレ違いやろ、テーマに沿って書き込めやボケ
0135nobodyさん2007/12/16(日) 06:21:49ID:???
>>134
スレ違いの書き込みなんていくらでもあるのになんでそこだけキレたんだ?
0136nobodyさん2007/12/16(日) 06:28:37ID:???
phpはフレームワークに向いてない言語くさいね
どれだけの時間がかかるか知らないけど
便利なライブラリと実用性がphpほど追いつけば
最終的にはRORがWEBプログラムの主流になるね
0137nobodyさん2007/12/16(日) 06:31:25ID:???
>>134
国分「PHPが糞言語と分かってどんな気持ちだった?
0138nobodyさん2007/12/16(日) 06:35:10ID:???
PHPはフレームワークに向いてないから乱立するんだよな
今の水準よりも上のフレームワークはもう出来ないだろう
早い話がPHPでrailsを超えるフレームワークを作るのは言語的に無理
0139nobodyさん2007/12/16(日) 06:36:05ID:???
>>131
答えてみる
1. rhaco
2. Ethna(現役)
3. 5
4. rhaco
5. 使わない
6. MySQL / SQLite
7. Python
0140nobodyさん2007/12/16(日) 06:38:42ID:???
フレームワーク全盛になったのを機会に
phpの時代がそろそろ終わりそうな気がする
0141nobodyさん2007/12/16(日) 06:39:52ID:???
[1]symfony
[2]mojavi
[3]5
[4]使わない
[5]Zend
[6]MySQL
[7]Python
0142nobodyさん2007/12/16(日) 06:46:33ID:???
[1]Phrame
[2]なし
[3]PHP3
[4]html
[5]Iメモ帳
[6]CSV
[7]CGI
0143nobodyさん2007/12/16(日) 08:11:44ID:???
pythonの引数の自由度の高さは異常
キーワード引数
*args
**args
あたりはPHPもパクるべき
0144nobodyさん2007/12/16(日) 08:44:45ID:???
>>143
なんでテーマからずれるかな
0145nobodyさん2007/12/16(日) 09:22:33ID:???
Ethna使ってた人はrhacoに行くパターンも多いんだな
haltさんとかriafさんとかが使ってるのも大きいんだろう
0146nobodyさん2007/12/16(日) 10:42:49ID:???
[1]俺俺railsもどき
[2]俺俺
[3]PHP5系
[4]俺俺からincludeしてviewのPHPファイル読むだけ。
[5]ZendStudio。VS.Php試用版使って、安いしこっちでも良かったと後悔中。
[6]MySQL。ライセンス考えたらこれしかない。
[7]Java。てか配布用にPHPでやってるだけ。ASP.NETも好きだけどレンタル鯖が高いからやめ。
■ このスレッドは過去ログ倉庫に格納されています