Maison  >  Article  >  développement back-end  >  Quelle est la différence entre ceci et self en php

Quelle est la différence entre ceci et self en php

王林
王林original
2020-07-15 16:12:096588parcourir

La différence entre this et self en PHP est la suivante : self appelle la classe, tandis que $this appelle l'objet instancié. self peut accéder aux propriétés statiques et aux méthodes statiques de cette classe, ainsi qu'aux constantes définies par const, et cela peut appeler des méthodes et des propriétés de cette classe.

Quelle est la différence entre ceci et self en php

Différence :

self appelle la classe, tandis que $this appelle l'objet instancié.

(Tutoriel recommandé : tutoriel php )

Expliquons-le en détail ci-dessous :

1. les propriétés et les méthodes statiques peuvent accéder aux propriétés statiques et aux méthodes statiques de la classe parent. Lorsque vous utilisez self, vous n'avez pas besoin de l'instancier.

Exemple de code :

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

Sortie du résultat :

instance

2 self peut accéder aux constantes définies par const

Exemple de code :

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

3. Cela peut appeler des méthodes et des attributs dans cette classe, ou des méthodes et des attributs appelables dans la classe parente. En plus des attributs statiques et des constantes const, cela peut essentiellement être appelé.

Exemple de code :

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

Résultat :

public
private
protected

Résumé : self est le nom de la classe qui fait référence à la classe statique, et $this est le nom de l'instance qui fait référence à la classe non statique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn