ホームページ  >  記事  >  バックエンド開発  >  this、self、parent の違いについては、PHP_PHP チュートリアルで詳しく説明されています。

this、self、parent の違いについては、PHP_PHP チュートリアルで詳しく説明されています。

WBOY
WBOYオリジナル
2016-07-21 15:07:59809ブラウズ

{一}PHP における this、self、parent の違いの 1 つこの記事
オブジェクト指向プログラミング (OOP、オブジェクト指向プログラミング) は、今やプログラマーの基本スキルとなっています。 PHP の高度なプログラミングに OOP アイデアを使用することは、PHP プログラミング能力を向上させ、Web 開発アーキテクチャを計画する上で非常に有意義です。
書き直された後、PHP5 は OOP のサポートにおいて大きな進歩を遂げ、オブジェクト指向言語のほとんどの機能を備えた言語になりました。PHP4 よりも多くのオブジェクト指向機能を備えています。 ここでは主に、「これ」「自分」「親」という3つのキーワードの違いについてお話します。 文字通りに理解すると、それぞれこれ、私、そして父親を指します。まず予備的な説明をしておきます。これは現在のオブジェクトへのポインタ (C のポインタとみなすことができます)、self は現在のクラスへのポインタ、parent は親クラスへのポインタです。これを表現するのにこれより適した言語がないため、ここでの説明にはポインタを頻繁に使用します。ポインタの概念については、百科事典を参照してください。
実例をもとにお話しましょう。初期化代入に使用
Function __construct( $name )

{ $this->name =$name //このポインタ文はここで使用されています ① } // デストラクタ関数 function __destruct() {}
//ユーザー名のメンバー関数を出力します
function printname()
{
} print($this->name) //このポインターステートメントを再度使用します。②、エコー出力も使用できます
}
}
$obj1 = new name ("PBPHome"); //インスタンス化オブジェクト文③
//印刷を実行
$obj1->printname(); //出力: PBPHome
echo"
"; //出力: Enter
/ /オブジェクトの 2 番目のインスタンス化
$obj2 = new name( "PHP" );
//印刷を実行します
$obj2->printname();

上記のクラスは、ステートメント①とステートメント②でそれぞれこのポインタを使用します。では、これは当時誰を指しているのでしょうか?実際、これは、オブジェクトを初めてインスタンス化するとき (ステートメント③)、その時点でステートメント②の print を実行するときに、これが誰を指すかを決定します。とすると、 print( $this- >name ) になり、当然「PBPHome」が出力されます。 2 番目のインスタンスでは、print($this->name) が print($obj2->name) になるため、「PHP」が出力されます。したがって、これは現在のオブジェクト インスタンスへのポインターであり、他のオブジェクトやクラスを指すものではありません。



{2} PHP における this、self、parent の違い パート 2 self


この記事では self の使い方を説明します
まず第一に、self がクラスを指していることを明確にする必要がありますそれ自体、つまり self がインスタンス化されたオブジェクトを指すかどうか。 一般に、self はクラス内の静的変数を指すために使用されます。クラス内で静的メンバーを使用する場合 (通常はキーワード static を使用します)、呼び出すために self も使用する必要があります。また、self を使用して静的変数を呼び出す場合は、:: (フィールド演算子記号) を使用する必要があることに注意してください。例を参照してください。



コードをコピーします
コードは次のとおりです:

関数__construct()
関数 printLastCount( )
//実行がここに到達すると、プログラムは 1 を出力します
?>


注目すべき箇所は①の文と②の文の2か所です。ステートメント①で静的変数 $firstCount を定義し、ステートメント②でその値を self を使って呼び出しています。このとき呼び出すのは、クラス自身が定義した静的変数 $frestCount です。私たちの静的変数は、次のオブジェクトのインスタンスとは何の関係もありません。それはクラスにのみ関連しています。その後、クラス自体を呼び出した場合、self がクラス自体を指しており、 を参照するために this を使用することはできません。オブジェクト インスタンスとは何の関係もありません。次に、前に使用した this はインスタンス化されたオブジェクト $obj を呼び出しますので、混乱しないでください。
例を挙げて説明するのは以上です。第二章の終わり。



{3} PHP における this、self とparent の違い Part 3 親


この記事では、parent の使い方について説明します。
まず、parent が親クラスへのポインタであることを明確にします。通常、親クラスのコンストラクターを呼び出すにはparentを使用します。例は次のとおりです。



コードをコピーします

コードは次のとおりです。


// 基本クラスを作成します Animal
class Animal { Public $name; // Attributes of基本クラス、name $name
/ /基本クラスのコンストラクター、初期化代入
Public function __construct( $name )
{
$this->name = $name;
}
} // 継承した派生クラスを定義from Animal クラス class extends Person Animal { public$personSex; //派生クラスの場合、属性 $personSex の性別と $personAge が新たに定義されます
public $personAge;
// 派生クラスのコンストラクター
function __construct( $personSex , $personAge)
{
parent::__construct( "PBPHome"); //parentを使って親クラス①のコンストラクタ文を呼び出します
メンバー導出された関数印刷に使用されるクラス、形式: name は name、age は age
function printperson()
{
is ".$this->personAge );
}
}
// Person オブジェクトをインスタンス化します
$personObject = new Person( "male", "21");
//印刷を実行
$personObject->printperson ();//出力結果: PBPHome は男性、年齢は 21 です
?>


これの使い方も含まれており、誰もが自分で分析できます。この詳細に注目します。メンバー属性はすべてパブリック (クラス内外のコードからアクセスできるパブリック属性とメソッド)、特に親クラスの属性とメソッドはこれを介してアクセスします。ポイントは①の文:parent::__construct("heiyeluren") このとき、parentを使って親クラスのコンストラクタを呼び出し、親クラスを初期化します。名前は PBPHome です。別のオブジェクト $personObject1 をインスタンス化してテストできます。印刷後も、名前は PBPHome のままです。
概要: これはインスタンス化時に決定されるオブジェクト インスタンスへのポインターです。self はクラス自体への参照であり、通常はクラス内の静的変数を指すために使用されます。parent は親クラスへの参照であり、通常は親として使用されます。親クラスのコンストラクターを呼び出します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327492.html技術記事 {1} PHP における this、self、parent の違いの 1 つ この記事 オブジェクト指向プログラミング (OOP、オブジェクト指向プログラミング) は、今やプログラマーの基本スキルとなっています。高度な PHP のための OOP アイデアの使用...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。