ホームページ >バックエンド開発 >PHPチュートリアル >PHP クラスで動的メソッドと静的メソッドを呼び出す方法について混乱しています。モデレーターにアドバイスをいただければ幸いです。

PHP クラスで動的メソッドと静的メソッドを呼び出す方法について混乱しています。モデレーターにアドバイスをいただければ幸いです。

WBOY
WBOYオリジナル
2016-06-13 12:04:241323ブラウズ

PHP クラスで動的メソッドと静的メソッドを呼び出す方法に疑問があります。モデレーターにアドバイスをいただければ幸いです

<?php<br />//error_reporting(0);<br />class A<br />{<br />	public $db='OK';<br />	private static $_instance;<br />	public static function getInstance()<br />    {<br />		if(!(self::$_instance instanceof self)){<br />			self::$_instance = new self;<br />		}<br />		return self::$_instance;<br />	}<br />	//维持find方法中this指针的写法不变<br />	public function find()<br />	{<br />		echo $this->db;<br />	}<br />}<br />class B extends A<br />{<br />	static function ex()<br />	{<br />		self::getInstance()->find();	<br />	}<br />}<br />$b=new B();<br />$b->find();<br />echo "<br>";<br />//第二种方法<br />B::ex();<br />?>

先ほどのモデレーターの説明に従って、少し修正して現在のものを実現しました。
まず、クラス A の find メソッドを、 $this ポインターを使用する代わりに使用したいと思います。 self
以下の 2 つのメソッドと同様です。 メソッドの呼び出し
最初の型は、find メソッドを動的に呼び出します。明らかに、出力は問題ありません。
2 番目の型 B は、最初に静的メソッドを呼び出して戻り値を返す静的クラスです。 「静的インスタンス化オブジェクト」?
次に、find メソッドを呼び出します。$this ポインタが変更されたかどうかはわかりません。
私が書いた目的は、外部コードがクラス A のメソッドを動的に呼び出すか静的に呼び出せるようにすることです。
ちょっと混乱していて混乱しています。
モデレータは動作原理を理解できますか?
------解決策------
あなたは $b=new B();以下の文
$b->db = 2;

を見ると、これは 1 つのクラスですが、2 つのシステムが含まれています

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