この記事では主に、PHP の self キーワードに関する関連知識を紹介します。サンプルコードを交えて詳しく紹介しているので参考になると思いますので、困っている方は参考にしていただければ幸いです。
序文
誰かが self キーワードの使用法について質問しましたが、答えは比較的明白です。 : 静的メンバー これを使用して関数内で非メンバー関数を呼び出すことはできませんが、self を使用して静的メンバー関数/変数/定数を呼び出すことはできます。他のメンバー関数は self を使用して静的メンバー関数および非静的メンバー関数を呼び出すことができます。議論が深まるにつれ、自分というものはそれほど単純なものではないことが分かります。このことを考慮して、この記事では、まずいくつかのキーワードを比較および区別し、次に self の使い方をまとめます。
親、静的、およびこれの違い
自己を完全に理解したい場合は、親、静的、および親について理解する必要があります。静的であり、これは区別されます。以下に比較を示します。
parent
self とparent の区別は比較的簡単です。parent は、親クラス/基本クラスの隠しメソッド (または変数) を指します。 self は Self メソッド (または変数) を指します。たとえば、コンストラクター内で親クラスのコンストラクターを呼び出します。
class Base { public function __construct() { echo "Base contructor!", PHP_EOL; } } class Child { public function __construct() { parent::__construct(); echo "Child contructor!", PHP_EOL; } } new Child; // 输出: // Base contructor! // Child contructor!
static
static は通常、関数または変数を変更してクラス関数にし、クラス変数。関数内の変数を変更して、そのライフ サイクルをアプリケーション全体のライフ サイクルに拡張することもできます。ただし、self との関連付けは、PHP 5.3 以降に導入された新しい用途である静的遅延バインディングです。
staticの静的遅延バインディング機能を使用すると、実行時に所属クラスを動的に決定することができます。例:
class Base { public function __construct() { echo "Base constructor!", PHP_EOL; } public static function getSelf() { return new self(); } public static function getInstance() { return new static(); } public function selfFoo() { return self::foo(); } public function staticFoo() { return static::foo(); } public function thisFoo() { return $this->foo(); } public function foo() { echo "Base Foo!", PHP_EOL; } } class Child extends Base { public function __construct() { echo "Child constructor!", PHP_EOL; } public function foo() { echo "Child Foo!", PHP_EOL; } } $base = Child::getSelf(); $child = Child::getInstance(); $child->selfFoo(); $child->staticFoo(); $child->thisFoo();
プログラムの出力は次のとおりです:
Base コンストラクター!
Child コンストラクター!
Base Foo!
Child Foo!
Child Foo!
関数参照に関して、self と static の違いは次のとおりです: 静的メンバー関数の場合、self はコードの現在のクラスを指し、static は呼び出し元のクラスを指します。 class; 非静的メンバー関数の場合、ポリモーフィズムを自己抑制し、現在のクラスのメンバー関数を指し、静的はこれに相当し、動的は呼び出し側クラスの関数を指します。
parent、self、static という 3 つのキーワードは、組み合わせると非常に興味深いものになります。これらはそれぞれ、親クラス、現在のクラス、サブクラスを指し、少し「過去、現在、未来」を持っています。風味。
this
self と this は最もよく議論される組み合わせであり、最も悪用される可能性が高い組み合わせでもあります。 2 つの主な違いは次のとおりです:
自己の目的
上記の 3 つのキーワードの違いを読んだ後、自己の目的はすぐに分かりますか?一文で要約すると、self は常に「現在のクラス (およびクラス インスタンス)」を指します。詳細は、次のとおりです:
スロット
$class = static::class; return $this instanceof $class; // 或者这样: return $this instanceof static;
それではなぜそうなるのですか? !
推奨学習: PHP ビデオ チュートリアル
以上がPHP の self キーワードについて学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。