ホームページ  >  記事  >  バックエンド開発  >  PHPでのselfキーワードの使用法は何ですか

PHPでのselfキーワードの使用法は何ですか

王林
王林オリジナル
2020-06-30 09:50:243122ブラウズ

php での self キーワードの使用法は次のとおりです: 1. クラス名を置換し、現在のクラスの静的メンバー変数と静的関数を参照します; 2. 多態性の動作を抑制し、現在のクラスの関数を参照しますサブクラスでオーバーライドするのではなく、クラスを使用します。 self は常に現在のクラス (およびクラス インスタンス) を指します。

PHPでのselfキーワードの使用法は何ですか

使用法:

self は常に「現在のクラス (およびクラス インスタンス)」を指します。

詳細な紹介:

1. クラス名を置換し、現在のクラスの静的メンバー変数と静的関数を参照します;

2. ポリモーフィックな動作を抑制し、関数を参照しますサブクラスでカバーされる実装ではなく、現在のクラスの実装です;

以下では、例を使用して、parent 、 static 、および this と比較します。

#parent

# self とparent の区別は比較的簡単です。parent は親クラス/基本クラスの隠しメソッド (または変数) を指し、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();

プログラムの出力は次のとおりです:

PHPでのselfキーワードの使用法は何ですか

関数参照に関して、self と static の違いは次のとおりです。 静的メンバー関数の場合、self は現在のコード クラスを指し、static は呼び出しクラスを指します。非静的メンバー関数の場合、自己はポリモーフィズムを抑制し、現在のクラスのメンバー関数を指します。static はこれと等価で、dynamic は次の関数を指します。呼び出し側のクラス。

さらに関連する知識については、

php 中国語 Web サイト をご覧ください。

以上がPHPでのselfキーワードの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。