ホームページ > バックエンド開発 > PHPチュートリアル > PHP 5 でクラスメンバーにアクセスするために `self` と `$this` を使用するのはどのような場合ですか?

PHP 5 でクラスメンバーにアクセスするために `self` と `$this` を使用するのはどのような場合ですか?

Patricia Arquette
リリース: 2024-12-17 15:41:11
オリジナル
952 人が閲覧しました

When to Use `self` vs. `$this` in PHP 5 to Access Class Members?

PHP 5 で '$this' ではなく 'self' を使用する場合

PHP 5 では、正しいキーワードを使用してクラスを参照するメンバーとメソッドが重要です。 'self' と '$this' のどちらを選択するかは、静的メンバーを参照しているかインスタンス メンバーを参照しているかによって決まります。

インスタンス メンバーに '$this' を使用する

'$this' は、オブジェクトの現在のインスタンスを指します。これは、各インスタンスに固有の非静的メンバーにアクセスするために使用されます。例:

class MyClass {
    private $member = 1;

    function __construct() {
        echo $this->member; // Outputs 1
    }
}
ログイン後にコピー

静的メンバーに 'self' を使用する

'self' は、インスタンスに関係なく、現在のクラスを参照します。これは、クラスのすべてのインスタンス間で共有される静的メンバーにアクセスするために使用されます。例:

class MyClass {
    private static $staticMember = 2;

    function __construct() {
        echo self::$staticMember; // Outputs 2
    }
}
ログイン後にコピー

ポリモーフィズムとメンバー関数

'$this' はポリモーフィズムを有効にし、派生クラスが親クラスのメンバー関数をオーバーライドできるようにします。例:

class BaseClass {
    function foo() {
        echo 'BaseClass::foo()';
    }
}

class DerivedClass extends BaseClass {
    function foo() {
        echo 'DerivedClass::foo()';
    }
}

$derivedObject = new DerivedClass();
$derivedObject->foo(); // Outputs 'DerivedClass::foo()'
ログイン後にコピー

'self' によるポリモーフィズムの抑制

メンバー関数で '$this' の代わりに 'self' を使用すると、ポリモーフィックな動作を抑制できます。 。この関数は、オブジェクトの実際の型に関係なく、常に親クラスから実装を呼び出します。例:

class BaseClass {
    function foo() {
        echo 'BaseClass::foo()';
    }
}

class DerivedClass extends BaseClass {
    function foo() {
        echo 'DerivedClass::foo()';
    }
}

$derivedObject = new DerivedClass();
$derivedObject->self::foo(); // Outputs 'BaseClass::foo()'
ログイン後にコピー

以上がPHP 5 でクラスメンバーにアクセスするために `self` と `$this` を使用するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート