ホームページ  >  記事  >  バックエンド開発  >  PHP5_PHP チュートリアルの this、self、parent キーワードに関する詳細なチュートリアル

PHP5_PHP チュートリアルの this、self、parent キーワードに関する詳細なチュートリアル

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

まず、上記の 3 つのキーワードを理解しましょう。これ、自分、親、文字通りに理解すると、これ、自分、父親、ははは、それはもっと楽しいです。最初に、これら 3 つのキーワードはそれぞれ「どこですか」です。これは現在のオブジェクトへのポインタ (ここでは C のポインタを使用しましょう)、self は現在のクラスへのポインタ、parent は親クラスへのポインタであることを簡単に説明しましょう。これを表現するのにこれ以上適した言語はないので、私たちはよくポインタを使います。笑、私は中国語をよく勉強していませんでした。 -_-#
まだよくわかっていないので、実例をもとにお話していきます。
(1) これ

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

class UserName
{
//属性を定義する
private $name //コンストラクター関数を定義する
function __construct; ( $name ;
関数 printName() 。
$nameObject ->printName(); //出力: heiyeluren
//オブジェクトの 2 番目のインスタンス化
$nameObject = new UserName( "PHP" ); //実行print
$nameObject->printName(); // 出力: PHP
?>


上記のクラスは、このポインタを line と line でそれぞれ使用していることがわかります。そのとき、これは誰を指しているのでしょうか?実際、これはインスタンス化時に誰を指すかを決定します。たとえば、オブジェクトが初めてインスタンス化されるとき (行)、this は $nameObject オブジェクトを指します。その後、その行を出力するときに print( $this-. > ;name ) になると、当然 "heiyeluren" が出力されます。 2 番目のインスタンスでは、 print( $this->name ) は print( $nameObject->name ) になるため、「PHP」が出力されます。したがって、これは現在のオブジェクト インスタンスへのポインターであり、他のオブジェクトやクラスを指すものではありません。
(2)self
まず、self がクラス自体を指すこと、つまり self はインスタンス化されたオブジェクトを指すものではないことを明確にする必要があります。一般に、self はクラス内の静的変数を指すために使用されます。



コードをコピーします

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

class Counter
{
//静的変数を含むプロパティを定義します
static $firstCount = ;
private $lastCount // コンストラクター関数;lastCount = ++selft::$firstCount; // self を使用して静的変数を呼び出す場合は、以下を使用する必要があります: (フィールド操作シンボル)
} print ( $this->lastカウント );


ここにいます 1 行目と 2 つの場所に注目してください。ライン1。 2 行目で静的変数 $firstCount を、operator の初期値で定義しました。このとき呼び出すのは、クラス自体によって定義された静的変数 $frestCount です。この静的変数は、クラス自体のインスタンスとは何の関係もありません。オブジェクトに続く場合、それはクラスにのみ関連します。クラス自体を呼び出すと、これを使用できません。参照するには、self を使用できます。self はクラス自体を指しており、オブジェクト インスタンスとは何の関係もないためです。 。言い換えれば、クラスに静的メンバーがある場合は、それらを呼び出すために self も使用する必要があります。
(3)parent
parent は親クラスへのポインターであることがわかっています。通常、parent を使用して親クラスのコンストラクターを呼び出します。 //基本クラスの構築 Function
public function __construct( $name ) Animal クラスを継承
{
public $personSex ; // 性別
public $personAge
// 継承クラス
のコンストラクター __construct( $personSex, $personAge)
{parent::__construct("heiyeluren"); //parent というクラスのコンストラクターを使用します。 $ personOnage; ; $ this->personSex. ",this year "
}
}
// Person オブジェクトをインスタンス化します
$personObject = new男性", "");
//印刷を実行
$personObject->printperson(); //出力: heiyeluren は今年男性です
?>

私たちは次のいくつかの詳細に注意を払っています: メンバー属性、特に親クラスの属性はすべてパブリックであり、継承されたクラスがこれを通じてアクセスできます。このとき、重要な点である line:parent::__construct( "heiyeluren" ) に注目します。このとき、親クラスのメンバーはすべて親クラスであるため、parent を使用して親クラスのコンストラクターを呼び出します。 public なので、これを直接使用して継承されたクラスを呼び出すことができます。
概要:
this はオブジェクト インスタンスへのポインター、self はクラス自体への参照、parent は親クラスへの参照です。
基本的に、私が知っているのはこれだけです。いくつかの誤解があるはずです。専門家に指摘してください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/318103.html技術記事まず、上記の 3 つのキーワードを理解しましょう。これは、自分、親を指します。笑、最初にこれら 3 つのキーワードを定義します。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。