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

王林
リリース: 2023-03-02 15:12:01
オリジナル
6553 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!