dポイントプレゼントキャンペーン実施中!

「引数の書き方」と「メンバ変数とメンバ関数の名前」について、教えてください。

クラス内のコード抜粋なのですが、下記はどういう意味なのでしょうか?

▼メンバ変数
var $j = true;

▼メンバ関数
function j($p = false){
if($p)
$this->j = false;
return $this->j;
}

$this->j(true);

分からないこと
・コードの意味全般
・($p = false)と書かれている引数の意味
・メンバ変数とメンバ関数の名前は同じでもよいか? 

A 回答 (1件)

(1)コードの意味全般



>▼メンバ変数
>var $j = true;
メンバ変数$jにtrueが代入されています。
trueは論理型の値であり、真を示しています。

>▼メンバ関数
>function j($p = false){
>if($p)
>$this->j = false;
>return $this->j;
>}
引数$pが真の時、メンバ変数$jにfalseを代入します。(falseは論理型の偽)
そして、メンバ変数$jの値を結果として返します。

>$this->j(true);
trueを引数としてメンバ関数jを呼び出しています。


(2)($p = false)と書かれている引数の意味
メンバ関数jの引数は$pとして与えられます。
$pにはデフォルト引数の指定がされていて、この引数を省略して呼び出された場合は、$pにはfalseが代入されます。


(3)メンバ変数とメンバ関数の名前は同じでもよいか?
PHPでは変数の名前には必ず「$」が付くので、これでメンバ変数とメンバ関数の区別がつきます。
ややこしいのはクラスのオブジェクトから呼び出された場合ですが

class名を仮にAとすると
$obj = new A;
$obj->j = false; // メンバ変数
$obj->j(false); // メンバ関数
メンバ変数の場合は代入や参照がおこなわれ、メンバ関数の場合は関数呼び出しの書式になるので区別がつきます。C言語のように関数名だけでポインタを示すとかいう仕組みはありませんから。
    • good
    • 0
この回答へのお礼

丁寧に解説いただきまして、ありがとうございました。理解できました!

お礼日時:2010/05/06 20:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!