さまざまな言語仕様について熱く語る闘技場
>>161
おお、やっと大垣さんの名前を知っている人が来たか。
よかったら>>159の問題を見てってくれ。
誰にもやってもらえなくてさびしい。 つうか、PHPのリファレンスって、要するにインスタンスに別名をつけることで、
仕組み自体はきわめて単純なものなんだよな。他言語で一般に言われるリファ
レンスと似ても似つかないだけで(俺だったら「エイリアス」とか命名したと
思う)。
わかりにくいのは、なんでPHPはこんな、他言語にはない奇妙な仕組みを必要と
するかだ。PHPのリファレンスはいつ、どのようなときに必要なのか。それを理
解するには、PHPの変数と各種インスタンスの挙動を理解する必要がある。
>>159のクイズは、まさにその辺の問題を扱っている。まあちょっと再帰を絡ま
せてしまったんで分かりにくくなってしまったが、再帰は枝葉で、本題にした
いのはそっちだ。
>>162
その問題、最初に出現したときに解いて、全問正解だったよ。
でもそんなこと書いたって意味ないから書かなかっただけ。
いろんなところにコピペしなくていいよ。 参照でおもしろいのは、引数を参照で受け取る関数で、
それがオブジェクトであることを期待してるのに、NULLだった場合とかに、
関数の中で何もしないのに、var_dumpすると再帰になるようなスクリプトで
別のメモリ領域にズレが生じるとか。 >>164
ちょっと待て。これどこかにコピペされてんの?
俺はここと、くだ質スレ79にしか書き込んでないぞ。
まあそんなことはどうでもいいか。
全問正解とはすごいな。俺自身、Q1の最後から2番目は、自分でも動かしてみな
いと分からんかった。
どうやって勉強した?PHPマニュアルだけでは>>159は分からんと思うが。
参考にさせてほしい。
あとQ2の答えを、手短でいいから書いてみてくれないか?
>>165
> 関数の中で何もしないのに、var_dumpすると再帰になるようなスクリプトで
すまんがここの意味が分からん。
なんかコードの実例で示してもらえんか? >>166
参照代入を行った場合のrefcountが違う 俺も大垣先生の本は分かりやすいと思った。
PHP6が出たら、改訂版の投入をお願いします!><
図書館で借りて読むけどw echo と print の厳密な違いを教えてください void zend_do_print(znode *result, znode *arg TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);
opline->result.op_type = IS_TMP_VAR;
opline->result.u.var = get_temporary_variable(CG(active_op_array));
opline->opcode = ZEND_PRINT;
opline->op1 = *arg;
SET_UNUSED(opline->op2);
*result = opline->result;
}
void zend_do_echo(znode *arg TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);
opline->opcode = ZEND_ECHO;
opline->op1 = *arg;
SET_UNUSED(opline->op2);
} >>177
echo は、(カンマ)で区切って、連続で引数をぶちこめる。
printはできない。 そうなるとprintなんて必要ないよな
配布スクリプトなんか覗くとprint使ってるやつがいるので不思議でたまらない printは成功すると1を返す。
echoは何も返さない。 $a=1;
$a ? echo 'aaa' : echo 'bbb'; //error
$a ? print 'aaa' : print 'bbb'; //ok システムハンガリアンって評判悪いじゃん。
たしかにC++みたいに型が違う値を代入しようとしたら
速攻でエラー吐くコンパイラにかけるんなら意味ないかと思うけど、
PHPみたいに元の型が何であろうが無視して新しい型にしてくれちゃう言語は、
ひるがえって『単なる型名を変数名につける』ってのが有効じゃないかと思うんだ。
PHPにおいてはアプリケーションハンガリアンよりシステムハンガリアンのほうがいい気がしてる。
ハンガリアンに限らず、PHPの柔軟すぎる型変換に適した命名規約を考えてくれ。 そもそも、ハンガリアンが嫌われているのは
変数に実際に入れる型がいろいろ変わるからなわけだが。
>>185はバグ回避のために違う型を入れないようにするためと
いっているのだと思うが、間違った型を入れるとか言う以前に
ソフトウェアの性質上、型は変わるものなんだよ。
(変数に最初に想定していた型以外のものを入れることになる)
時代の流れとともに16bit変数は32bit変数に変わるし、
32bitポインタは64bitポインタに変わるし、
オブジェクト指向言語なら、型は継承され新しい型になる。
PHPのような柔軟な言語だからこそ、なおさらハンガリアンは必要ない。
それにハンガリアン(変数の頭に型を入れる)を使うまでもなく
変数名そのものが型をあらわしている。flagならtrue/falseだし、priceなら数値だろう。 >>185
flagがビットフラグ(整数)だったり
priceが税計算機能つきのItemPriceクラスのオブジェクトだったらどうすんの? 常識の範囲内ならどうでもいい。
つまりは、priceがlongからItemPriceに変わるというように
型が変わることがあるってこった。
それは避けられないからハンガリアンはよくない。 クラスでゲッターやセッター使ってれば
タイプヒンティングも使えるし、型よりも値の範囲を絞って
例外を飛ばせるから全く問題ない。
一度処理に入ったら長い処理が行われるのではなくて
1回毎のシンプルな処理をセッションやクッキー使ってどうにか
継続させるのがWebアプリだから、ユーザー側のデータは
1回毎に改変が無いか毎回チェックする事になるし、型があってもなくても関係ない。 >>190
議論はここでおk
無駄なスレは使わなくておk Mono最強伝説
http://ja.wikipedia.org/wiki/XSP_(Web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC) システムハンガリアン病だわ・・・
HTMLでさえも<span id="spanHoge">とか<input type="text" name="txtHoge">とか
しないと気が済まない_| ̄|○ 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
L32JIAVAJE ウム(メ▼▼)y-i_(・o・ ;)オヤブンドウゾ!!