Heim >Backend-Entwicklung >PHP-Problem >Was ist der Unterschied zwischen this und self in PHP?

Was ist der Unterschied zwischen this und self in PHP?

王林
王林Original
2020-07-15 16:12:096622Durchsuche

Der Unterschied zwischen this und self in PHP ist: self ruft die Klasse auf, während $this das instanziierte Objekt aufruft. self kann auf statische Eigenschaften und statische Methoden in dieser Klasse sowie auf durch const definierte Konstanten zugreifen und dadurch Methoden und Eigenschaften in dieser Klasse aufrufen.

Was ist der Unterschied zwischen this und self in PHP?

Unterschied:

self ruft die Klasse auf, während $this das instanziierte Objekt aufruft.

(Empfohlenes Tutorial: php-Tutorial )

Lassen Sie es uns unten im Detail erklären:

1 Selbst kann in dieser Klasse auf Static zugreifen Eigenschaften und statische Methoden können auf statische Eigenschaften und statische Methoden in der übergeordneten Klasse zugreifen. Wenn Sie self verwenden, müssen Sie es nicht instanziieren.

Codebeispiel:

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

Ergebnisausgabe:

instance

2. self kann auf durch const definierte Konstanten zugreifen

Codebeispiel:

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

3. Dies kann grundsätzlich Methoden und Attribute in dieser Klasse oder aufrufbare Methoden und Attribute in der übergeordneten Klasse aufrufen.

Codebeispiel:

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

Ergebnis:

public
private
protected

Zusammenfassung: self ist der Klassenname, der auf die statische Klasse verweist, und $this ist der Instanzname, der auf die verweist nicht statische Klasse.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen this und self in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn