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

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

Jul 21, 2016 pm 03:07 PM
parent php self this 1つ 違い 話し合う 詳しい説明

{一}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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

C言語関数の基本的な要件は何ですか C言語関数の基本的な要件は何ですか Apr 03, 2025 pm 10:06 PM

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? Apr 04, 2025 pm 11:15 PM

JavaScriptのDOMノードの下でのXpath検索方法の詳細な説明、XPath式に基づいてDOMツリーから特定のノードを見つける必要があることがよくあります。あなたがする必要があるなら...

CとC#の違いと接続は何ですか? CとC#の違いと接続は何ですか? Apr 03, 2025 pm 10:36 PM

CとC#には類似点がありますが、それらは完全に異なります。Cはプロセス指向の手動メモリ管理、およびシステムプログラミングに使用されるプラットフォーム依存言語です。 C#は、デスクトップ、Webアプリケーション、ゲーム開発に使用されるオブジェクト指向のガベージコレクション、およびプラットフォーム非依存言語です。

クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? Apr 07, 2025 am 12:02 AM

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

C言語関数の概念 C言語関数の概念 Apr 03, 2025 pm 10:09 PM

C言語関数は再利用可能なコードブロックです。彼らは入力を受け取り、操作を実行し、結果を返すことができます。これにより、再利用性が改善され、複雑さが軽減されます。関数の内部メカニズムには、パラメーターの渡し、関数の実行、および戻り値が含まれます。プロセス全体には、関数インラインなどの最適化が含まれます。単一の責任、少数のパラメーター、命名仕様、エラー処理の原則に従って、優れた関数が書かれています。関数と組み合わせたポインターは、外部変数値の変更など、より強力な関数を実現できます。関数ポインターは機能をパラメーターまたはストアアドレスとして渡し、機能への動的呼び出しを実装するために使用されます。機能機能とテクニックを理解することは、効率的で保守可能で、理解しやすいCプログラムを書くための鍵です。

PHP関数引数と配列の開梱で...(SPLAT)演算子の目的と使用について説明してください。 PHP関数引数と配列の開梱で...(SPLAT)演算子の目的と使用について説明してください。 Apr 06, 2025 am 12:07 AM

PHPの...(SPLAT)演算子は、機能パラメーターと配列を開梱するために使用され、コードのシンプルさと効率を向上させます。 1)関数パラメーター解放:アレイ要素をパラメーターとして関数に渡します。 2)配列の開梱:アレイを別の配列または関数パラメーターに解除します。

See all articles