domxml周りのめんどくささ
お久しぶりです。
ただ今仕事でphpを始めております。Web系統の処理が非常に楽チンなのでMMORPGもこれで作っちゃおうかしらと気持ちが傾いています(というか最近のブラウザMMORPGはこういうスクリプト言語で作られてんじゃないかしら?)
まあ、サーバー側の負担が半端ではないので、1万人同時接続とか無理でしょうけどね。
さて!急いでphpに携わらなければならなかったので、即席でphp使いになるために
しかしやはりそこには落とし穴が!
phpでは変数には頭に半角の「$」を付ける。うむ、それはBASICでもそうなので違和感は無い。
phpでは定数には頭に半角の「$」を付けない。ほほう、そうやって区別するのね。識別子を見ただけで定数か変数か分かるのはいいね。
さーて参考ソースをもらったので、それを手本にお仕事しますかね。どれどれ?phpではオブジェクトのフィールドを$obj->fldmnberと呼び出すようだな。うむうむ、これはCと同じだね。
じゃあ早速オブジェクトのフィールドで
$var1 = 1;
と設定した変数を
echo $obj->$var1;
と呼び出すかな。
↓実行後
Object
・・・
なんじゃあコリャぁ!
散々調べて気がついた。正しくは
echo $obj->var1;
と呼び出すべきだったのだ!
おかしいだろ!半日潰れたわ!これじゃオブジェクトの定数を呼び出すことになるだろ?
しかしオブジェクトの定数はなんと
echo $obj::var1;
と呼び出すらしい。
どうもphpの設計者は変数の識別子を「$var1」じゃなくて「$」「var1」と考えているらしい。
だからオブジェクトを呼び出すときは「$」「obj->var1」となるのだろう。命令解析のときもその方が楽そうだしな。
教訓:一応ちゃんとした文法書も読もう。
上記の本には定数・オブジェクトという概念そのものが紹介されていなかったので、こういう違いに気付かなかった。まあ、参考ソースをちゃんと読んでればよかったんだがな。どうも俺は思い込みで書いたりしゃべったりが多くてイカン。恥ずかしい。