首頁 >後端開發 >PHP問題 >php中this和self的差別是什麼

php中this和self的差別是什麼

王林
王林原創
2020-07-15 16:12:096608瀏覽

php中this和self的差別是:self呼叫的是類,而$this呼叫的是實例化的物件。 self可以存取本類別中的靜態屬性和靜態方法,以及const定義的常數,this可以呼叫本類別中的方法和屬性。

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();

三、this可以呼叫本類別中的方法和屬性,也可以呼叫父類別中的可以呼叫的方法和屬性,除了靜態屬性和const常數,基本上都可以使用this呼叫。

程式碼範例:

    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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn