PHPの演算子”->”って何?
PHP (55 items)
2004年06月17日
”アロー演算子”
C、C++、Perlのものと同じ。
これらの言語経験のない人間(VB、Javaは経験済→例えば私)が、
Nucleus解析した時に、最初にぶち当たる疑問。
一言で言えば、
「アロー演算子=オブジェクトのポインタを使用し、オブジェクトのメンバにアクセスする」
下に参考資料は転載するが、
Javaで言うと、”->”は”.”に置き換えて考えると解りやすい。
Nucleus解析で見ると、globalfunctions.php内の
このように、”.”で置き換えて理解する。
C、C++、Perlのものと同じ。
これらの言語経験のない人間(VB、Javaは経験済→例えば私)が、
Nucleus解析した時に、最初にぶち当たる疑問。
一言で言えば、
「アロー演算子=オブジェクトのポインタを使用し、オブジェクトのメンバにアクセスする」
下に参考資料は転載するが、
Javaで言うと、”->”は”.”に置き換えて考えると解りやすい。
Nucleus解析で見ると、globalfunctions.php内の
514行目でDBからオブジェクトを取得し、
$obj = mysql_fetch_object($res);
521行目で取得項目を変数にセットしている部分
$blogid = $obj->iblog;
↓
$blogid = $obj.iblog;
このように、”.”で置き換えて理解する。
※参考資料
基礎知識
************************************
★アロー演算子★
例として、以下のようなクラスを考えます。
[例]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
class sample{
int property;
void method();
};
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
普通、このクラスを使うときには「sample obj;」のように
オブジェクトを宣言し「obj.property;」や「obj.method();」として
持っているメンバにアクセスすると思います。
ところが実際にオブジェクトに直接参照できれば好ましいのですが、
sample* p;
p = new sample;
のように、ポインタがオブジェクトを間接参照する形で存在することも
あるでしょう。
このとき「*p」とすれば、オブジェクトの実体にアクセスできます。
「(*p).property」や「(*p).method()」とすれば
ポインタpが指しているオブジェクトのメンバにアクセスします。
ただ、この書き方はあまりに冗長なのでもっと簡単な方法が用意されています。
[アロー演算子を用いた、メンバのアクセス]━━━━━━━━━━━━━
p->obj;・・・(*p).obj; と等価
p->method();・・・(*p).method(); と等価
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
このように「アロー演算子」を用いると、面倒な括弧やアスタリスクを
省くことができます。
アロー演算子は
「-(マイナス記号)」と「>(不等号)」を続けて書いてください。
************************************
基礎知識
************************************
★アロー演算子★
例として、以下のようなクラスを考えます。
[例]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
class sample{
int property;
void method();
};
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
普通、このクラスを使うときには「sample obj;」のように
オブジェクトを宣言し「obj.property;」や「obj.method();」として
持っているメンバにアクセスすると思います。
ところが実際にオブジェクトに直接参照できれば好ましいのですが、
sample* p;
p = new sample;
のように、ポインタがオブジェクトを間接参照する形で存在することも
あるでしょう。
このとき「*p」とすれば、オブジェクトの実体にアクセスできます。
「(*p).property」や「(*p).method()」とすれば
ポインタpが指しているオブジェクトのメンバにアクセスします。
ただ、この書き方はあまりに冗長なのでもっと簡単な方法が用意されています。
[アロー演算子を用いた、メンバのアクセス]━━━━━━━━━━━━━
p->obj;・・・(*p).obj; と等価
p->method();・・・(*p).method(); と等価
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
このように「アロー演算子」を用いると、面倒な括弧やアスタリスクを
省くことができます。
アロー演算子は
「-(マイナス記号)」と「>(不等号)」を続けて書いてください。
************************************
前の記事 次の記事