ホームページ >バックエンド開発 >PHPの問題 >PHP の static、self、$this の違いは何ですか?

PHP の static、self、$this の違いは何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-01 15:15:114008ブラウズ

php における static、self、$this の違いは次のとおりです: 1. [$this] は、クラス内の非静的メソッドで記述されたオブジェクトへの参照を表します; 2. Self は、これは、クラス自体を指しますが、インスタンス化されたオブジェクトは指しません; 3. static は、通常、クラス内の静的変数および静的メソッドにアクセスするために使用されます。

PHP の static、self、$this の違いは何ですか?

php における static、self、$this の違いは次のとおりです:

1、$ this オブジェクトへの参照を表します。$this はクラス内の非静的メソッドに記述されます。クラスがインスタンス化されるとき、メソッドを呼び出す人 (通常はオブジェクト呼び出し) $this はオブジェクトへの参照を表します。

<?php
class Person {
    public $name;
    public function getName() {
        echo $this->name;
    }
}
$p = new Person();
$p2 = new Person();
$p->name = "小红";
$p2->name = "小明";
$p->getName();  // 小红
$p2->getName();  // 小明

2. self はこれとは異なり、クラス自体を指しており、クラス自体を指しませんインスタンス化されたオブジェクト。一般に、クラス内の静的変数および静的メソッドにアクセスするために使用され、クラス内に記述されたメソッドでもあります。どのクラス self が記述されているかは、クラス

<?php
class Person {
    public static $name = "小红";
    public static function getName() {
        echo self::$name;
    }
}
$p = new Person();
$p2 = new Person();
$p::getName();  // 小红
$p2::getName();  // 小红
$p::$name = "小明";
$p::getName();  // 小明
$p2::getName();  // 小明

3, static# の参照を示します。 ## 一般に、クラス内の静的変数および静的メソッドにアクセスするために使用されます。これらは、クラス内に記述されたメソッドでもあります。クラスがメソッドを呼び出すとき、静的とは、そのクラス (そのクラスをバインドする) を意味します。

<?php
class A {
    public function say() {
        echo "Hello";
    }
    public function saySelf() {
       //static 和 self 可以调用非静态方法  不能调用非静态属性  静态方法中不能有$this
      // static 和 self 可以写在非静态的方法中 ,可以使用对象调用
        self::say();
    }
    public function sayStatic() {
        static::say();
    }
}
class B extends A {
    public function say() {
        echo "World";
    }
}
$b = new B();
$b->say();  // World
$b->saySelf();  // Hello
$b->sayStatic();  // World

関連する学習に関する推奨事項:

PHP プログラミングの入門から熟練度まで

#

以上がPHP の static、self、$this の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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