怒りのJava学習 このページをアンテナに追加 RSSフィード

Java初心者が
Java学習の途中で感じた怒りを
叩きつけるブログ

 このブログでは
※コンパイルエラーの99%は入力ミスで出来ています
※コンパイルエラーの1%は故意の省略で出来ています

現在皆様のエラー例を募集中



↓このブログの執筆方針
はじめに

↓ブログランキングへのリンク

クリックでランキングのポイントが加算される
今のところどうでもいい

2011-01-24 ただ今浮気中

[]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」となるのだろう。命令解析のときもその方が楽そうだしな。


教訓:一応ちゃんとした文法書も読もう。


上記の本には定数・オブジェクトという概念そのものが紹介されていなかったので、こういう違いに気付かなかった。まあ、参考ソースをちゃんと読んでればよかったんだがな。どうも俺は思い込みで書いたりしゃべったりが多くてイカン。恥ずかしい。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/java1rou/20110124/1295846089
リンク元