ホームページ  >  記事  >  バックエンド開発  >  PHPの静的関数の$thisの問題

PHPの静的関数の$thisの問題

WBOY
WBOYオリジナル
2016-10-24 00:12:421682ブラウズ

クラスA{

リーリー

}
クラス B は A を拡張します{

リーリー

}

$b = new B();
$b->subtell();//22 1 22;

エコー


';
$b->subMoney();

最後の文は、オブジェクトコンテキストにないときに$thisを使用するとエラーを報告します
しかし、subMoney()が呼び出されるとき、$thisはバインドされず、$thisはbオブジェクトを指しますと実行すると、parent::sayMoney(); は静的に呼び出されるため、$this にバインドされません。sayMoney() を実行すると、なぜエラーが報告されるのでしょうか? b->subtell(); 同じですか?

返信内容:

クラスA{

リーリー

}

クラス B は A を拡張します{
リーリー

}

$b = new B();

$b->subtell();//22 1 22;

エコー

';
$b->subMoney();
最後の文は、オブジェクトコンテキストにないときに$thisを使用するとエラーを報告します

しかし、subMoney()が呼び出されるとき、$thisはバインドされず、$thisはbオブジェクトを指しますと実行すると、parent::sayMoney(); は静的に呼び出されるため、$this にバインドされません。sayMoney() を実行すると、なぜエラーが報告されるのでしょうか? b->subtell(); 同じですか?

静的メソッド内では使用できません

this, 静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用, 你可以 classA::staticMethod() 或者 $a = new classA(); $a->staticMethod() , 但其内部就是不能使用this

違う

上の人の言う通りです、2番目に呼ばれる関数はstaticを使っているので$thisは使えません

元の答えはこちらです

private は、プライベートであり、継承されたクラスであっても、クラス内でのみアクセスを許可することを示します。

継承されたアクセスが許可されており、外部アクセスを望まない場合は、それを「保護」に変更できます。

さらに、そのクラスのインスタンスが作成され、$this はどのクラスを表します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。