ホームページ > バックエンド開発 > PHPチュートリアル > PHP5 ポインターのカテゴリーの紹介_PHP チュートリアル

PHP5 ポインターのカテゴリーの紹介_PHP チュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-15 13:28:32
オリジナル
959 人が閲覧しました

皆さんも多いのではないでしょうかまずは、この、自分、親という3つのキーワードを理解しましょう。文字通りに理解しやすいのは、これ、自分、お父さん、ははは、もっと楽しい、確立しましょうまず、いくつかの概念について説明します。これら 3 つのキーワードはどこで使用されますか。これは現在のオブジェクトへのポインター (C のポインターを使用して見てみましょう)、self は現在のクラスへのポインター、parent はポインターであることを簡単に説明します。親クラスへのポインタ。

まだよくわかっていないので、実例をもとにお話していきます。

(1) PHP5 ポインタ this

<ol class="dp-xml">
<li class="alt">
<span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN>   </SPAN></SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>class UserName  </SPAN><LI class=""><SPAN>{   </SPAN><LI class=alt><SPAN>//定义属性   </SPAN><LI class=""><SPAN>private $name;  </SPAN><LI class=alt><SPAN> </SPAN><LI class=""><SPAN>//定义构造函数  </SPAN><LI class=alt><SPAN>function __construct( $name )  </SPAN><LI class=""><SPAN>{  </SPAN><LI class=alt><SPAN>$this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></span></font></strong></span><span class="attribute"><font color="#ff0000">name</font></span><span> = $name; //这里已经使用了this指针  </span>
</li>
<li class=""><span>}  </span></li>
<li class="alt"><span> </span></li>
<li class=""><span>//析构函数  </span></li>
<li class="alt"><span>function __destruct(){}  </span></li>
<li class=""><span> </span></li>
<li class="alt"><span>//打印用户名成员函数  </span></li>
<li class=""><span>function printName()  </span></li>
<li class="alt"><span>{  </span></li>
<li class="">
<span>print( $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>name ); //又使用了this指针  </span>
</li>
<li class="alt"><span>}  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span> </span></li>
<li class=""><span>//实例化对象  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">nameObject</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> UserName( "heiyeluren" );  </span>
</li>
<li class=""><span> </span></li>
<li class="alt"><span>//执行打印  </span></li>
<li class="">
<span>$nameObject-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printName(); //输出: heiyeluren  </span>
</li>
<li class="alt"><span> </span></li>
<li class=""><span>//第二次实例化对象  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">nameObject2</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> UserName( "PHP5" );  </span>
</li>
<li class=""><span> </span></li>
<li class="alt"><span>//执行打印  </span></li>
<li class="">
<span>$nameObject2-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printName(); //输出:PHP5  </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>
ログイン後にコピー

上記のクラスがそれぞれ 11 行目と 20 行目でこのポインタを使用していることがわかります。では、この時点でこれは誰を指しているのでしょうか?実際、これはオブジェクトをインスタンス化するときに誰を指すかを決定します。たとえば、オブジェクトが初めてインスタンス化されるとき (25 行目)、this は $nameObject オブジェクトを指します。その後、18 行目で print( $this. ->name ) になると、当然 "heiyeluren" が出力されます。 2 番目のインスタンスでは、 print( $this->name ) は print( $nameObject2->name ) になるため、「PHP5」が出力されます。したがって、これは現在のオブジェクト インスタンスへのポインターであり、他のオブジェクトやクラスを指すものではありません。

(2) self への PHP5 ポインター

まず第一に、self がクラス自体を指していること、つまり self がインスタンス化されたオブジェクトを指していないことを明確にする必要があります。一般に、self は指すために使用されます。クラス内の静的変数に。

<ol class="dp-xml">
<li class="alt">
<span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>class Counter  </SPAN><LI class=""><SPAN>{  </SPAN><LI class=alt><SPAN>//定义属性,包括一个静态变量  </SPAN><LI class=""><SPAN>private static $</SPAN><SPAN class=attribute><FONT color=#ff0000>firstCount</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>0</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN>private $lastCount;  </SPAN><LI class=""><SPAN>//构造函数  </SPAN><LI class=alt><SPAN>function __construct()  </SPAN><LI class=""><SPAN>{  </SPAN><LI class=alt><SPAN>$this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></span></font></strong></span><span class="attribute"><font color="#ff0000">lastCount</font></span><span> = ++selft::$firstCount; //使用self来调用静态变量,使用self调用必须使用::(域运算符号)  </span>
</li>
<li class=""><span>}  </span></li>
<li class="alt"><span>//打印最次数值  </span></li>
<li class=""><span>function printLastCount()  </span></li>
<li class="alt"><span>{  </span></li>
<li class="">
<span>print( $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>lastCount );  </span>
</li>
<li class="alt"><span>}   </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span> </span></li>
<li class=""><span>//实例化对象  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">countObject</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> Counter();  </span>
</li>
<li class="">
<span>$countObject-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printLastCount(); //输出 1  </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>
ログイン後にコピー

ここで注意する必要があるのは、6 行目と 12 行目の 2 か所だけです。 2 行目で静的変数 $firstCount を定義し、初期値は 0 です。次に、12 行目でこの値を呼び出し、self を使用して呼び出し、途中で接続するために "::" を使用しました。ドメイン演算子を呼び出すと、この時点で呼び出すのはクラス自体によって定義された静的変数 $frestCount です。静的変数は次のオブジェクトのインスタンスとは関係がなく、クラスにのみ関連します。クラス自体の場合、this を使用して参照することはできません。self はクラス自体を指しており、オブジェクト インスタンスとは何の関係もないため、self を使用して参照できます。言い換えれば、クラスに静的メンバーがある場合は、それらを呼び出すために self も使用する必要があります。

(3)PHP5 ポインターparent

一般に、parent は親クラスのコンストラクターを呼び出すために使用します。

<ol class="dp-xml">
<li class="alt">
<span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>//基类  </SPAN><LI class=alt><SPAN>class Animal  </SPAN><LI class=""><SPAN>{  </SPAN><LI class=alt><SPAN>//基类的属性  </SPAN><LI class=""><SPAN>public $name; //名字  </SPAN><LI class=alt><SPAN>//基类的构造函数  </SPAN><LI class=""><SPAN>public function __construct( $name )  </SPAN><LI class=alt><SPAN>{  </SPAN><LI class=""><SPAN>$this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></span></font></strong></span><span class="attribute"><font color="#ff0000">name</font></span><span> = $name;  </span>
</li>
<li class="alt"><span>}  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>//派生类  </span></li>
<li class=""><span>class Person extends Animal //Person类继承了Animal类  </span></li>
<li class="alt"><span>{  </span></li>
<li class=""><span>public $personSex; //性别  </span></li>
<li class="alt"><span>public $personAge; //年龄  </span></li>
<li class=""><span>//继承类的构造函数  </span></li>
<li class="alt"><span>function __construct( $personSex, $personAge )  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>parent::__construct( "heiyeluren" ); //使用parent调用了父类的构造函数  </span></li>
<li class="">
<span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">personSex</font></span><span> = $personSex;  </span>
</li>
<li class="alt">
<span>$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span class="attribute"><font color="#ff0000">personAge</font></span><span> = $personAge;  </span>
</li>
<li class=""><span>}  </span></li>
<li class="alt"><span>function printPerson()  </span></li>
<li class=""><span>{  </span></li>
<li class="alt">
<span>print( $this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>name. " is " .$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>personSex. ",this year " .$this-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>personAge );  </span>
</li>
<li class=""><span>}  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>//实例化Person对象  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">personObject</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> Person( "male", "21");  </span>
</li>
<li class=""><span> </span></li>
<li class="alt"><span>//执行打印  </span></li>
<li class="">
<span>$personObject-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>printPerson(); //输出:heiyeluren is male,this year 21  </span>
</li>
<li class="alt"><span> </span></li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>
ログイン後にコピー
これらのいくつかの詳細に注意を払っています: メンバー属性、特に親クラスの属性はすべてパブリックであり、継承されたクラスがこれを介してアクセスできます。キーポイントである 25 行目:parent::__construct( "heiyeluren" ) に注目してください。このとき、PHP5 ポインタのparentを使用して親クラスのコンストラクタを呼び出し、親クラスを初期化します。親クラスの要素は public なので、これを直接使用して継承クラスで呼び出すことができます。

www.bkjia.com本当http://www.bkjia.com/PHPjc/446436.html技術記事まず、これ、自分、親という 3 つのキーワードを理解するとよいでしょう。文字通りに理解するのが簡単です。笑、最初にこれら 3 つの概念を確立しましょう。 ..
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート