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

phpのthisとselfの違いは何ですか

王林
王林オリジナル
2020-07-15 16:12:096623ブラウズ

php における this と self の違いは、self がクラスを呼び出すのに対し、$this はインスタンス化されたオブジェクトを呼び出すことです。 self は、このクラスの静的プロパティと静的メソッド、および const で定義された定数にアクセスでき、このクラスのメソッドとプロパティを呼び出すことができます。

phpのthisとselfの違いは何ですか

違い:

self はクラスを呼び出しますが、$this はインスタンス化されたオブジェクトを呼び出します。

(推奨チュートリアル: php チュートリアル)

詳しく説明しましょう:

1. self は静的プロパティと静的メソッドにアクセスできます親クラスの静的プロパティと静的メソッドにアクセスできます。 self を使用する場合、インスタンス化する必要はありません。

コード例:

      class self_test {
    
          static $instance;
 
          public function __construct(){
              self::$instance = 'instance';//静态属性只能通过self来访问
          }
    
          public function tank(){
              return self::$instance;//访问静态属性
          }
      }
 
      $str = new self_test();
      echo $str->tank();

結果出力:

instance

2. self は const で定義された定数にアクセスできます

コード例:

    class self_test {
    
        const  NAME = 'tancy';
 
        public function tank(){
            return self::NAME;
        }
    }
 
    $str = new self_test();
    echo $str->tank();

3. これは、静的プロパティと const 定数に加えて、このクラスのメソッドとプロパティ、または親クラスの呼び出し可能なメソッドとプロパティを呼び出すことができます。

コード例:

    class self_test {
        public $public;
    
        private $private;
    
        protected $protected;
 
        public function __construct(){
            $this->public = 'public';
            $this->private = 'private';
            $this->protected = 'protected';
        }
    
        public function tank(){
            return $this->public;
        }
    
        public function dell(){
            return $this->private;
        }
    
        public function datesrt(){
            return $this->protected;
        }
    }
 
    $str = new self_test();
    echo $str->tank();
    echo "</br>";
    echo $str->dell();
    echo "</br>";
    echo $str->datesrt();

結果:

public
private
protected

概要: self は静的クラスを参照するクラス名、$this は静的クラスを参照するインスタンス名です。非静的クラス。

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

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