ホームページ >バックエンド開発 >PHPチュートリアル >PHP プログラミング中に this、self、parent の違いについて知っておくべきこと_PHP チュートリアル

PHP プログラミング中に this、self、parent の違いについて知っておくべきこと_PHP チュートリアル

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

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

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

class name //name という名前のクラスを作成します
{
private $name //プロパティ、private を定義します
//コンストラクターを定義します。 、初期化代入に使用されます
function __construct( $name )
{
$this->name = $name; //このポインターステートメントはここで使用されています①
}
//デストラクター
function __destruct(){}
/ /Print ユーザー名メンバー関数
function printname()
{
print( $this->name ); // このポインターステートメントを再度使用します。②、エコー出力も使用できます
}
}
$obj1 = new name( "PBPHome" ); //インスタンス化オブジェクトステートメント③
//印刷を実行
$obj1->printname(); //出力: PBPHome
echo "
" //出力: Enter
;オブジェクトの
$obj2 = new name( "PHP" );
//印刷を実行します
$obj2->printname(); //出力: PHP

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

{二}。 PHP における this、self、parent の違い パート 2 Self
この記事では self の使い方を説明します
まず第一に、self がクラス自体を指していること、つまり self がクラス自体を指しているわけではないことを明確にする必要があります。一般に、self はクラス内の静的変数を指すために使用されます。クラス内で静的メンバーを使用する場合 (通常はキーワード static を使用します)、呼び出すために self も使用する必要があります。また、self を使用して静的変数を呼び出す場合は、:: (フィールド演算子記号) を使用する必要があることに注意してください。例を参照してください。 ①
private static $firstCount = 0;
private $lastCount;
//コンストラクター __construct() { $this->lastCount = ++self::$firstCount; //self を使用して静的変数ステートメントを呼び出します。 ② } //lastCount 値を出力する
function printLastCount()
{
print( $this->lastCount );
}
}
//オブジェクトをインスタンス化する
$obj = new Counter(); - >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; //基底クラスの属性、name $name
//基底クラスのコンストラクター、初期化代入
public function __construct ( $ name )
{
$this->name = $name;
}
}
//Animal クラスを継承する派生クラス person を定義します
class Person extends Animal
{
public $personSex;派生クラスの場合、新しい定義 属性 $personSex 性別、$personAge 年齢
public $personAge;
//派生クラスのコンストラクター
function __construct( $personSex, $personAge )
{
parent::__construct( "PBPHome" ); //親を使用して呼び出します
$this->personSex = $personSex;
$this->personAge = $personAge;
//印刷に使用される派生クラスのメンバー関数、形式: name は name 、年齢は age
function printperson()
{
print( $this->name. " は " .$this->personSex. ",年齢は " .$this->personAge ); //人物オブジェクトをインスタンス化します
$personObject = new Person( "male", "21");
//印刷を実行します
$personObject->printPerson(); //出力結果: PBPHome は男性、年齢は 21 です
?>


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


http://www.bkjia.com/PHPjc/321057.html

www.bkjia.com

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