Maison >développement back-end >Problème PHP >Quelles sont les différences entre static, self et $this en PHP ?

Quelles sont les différences entre static, self et $this en PHP ?

coldplay.xixi
coldplay.xixioriginal
2020-07-01 15:15:114008parcourir

Les différences entre static, self et $this en PHP sont : 1. [$this] représente une référence à l'objet, écrite dans une méthode non statique dans la classe 2. Self est différent de ; ceci, il pointe vers la classe elle-même, ne pointe vers aucun objet instancié ; 3. static est généralement utilisé pour accéder aux variables statiques et aux méthodes statiques dans une classe.

Quelles sont les différences entre static, self et $this en PHP ?

Les différences entre static, self et $this en php sont :

1. la référence de l'objet $this est écrite dans une méthode non statique de la classe. Lorsque la classe est instanciée, celui qui appelle la méthode (généralement un appel d'objet) $this représente une référence à l'objet. $this

<?php
class Person {
    public $name;
    public function getName() {
        echo $this->name;
    }
}
$p = new Person();
$p2 = new Person();
$p->name = "小红";
$p2->name = "小明";
$p->getName();  // 小红
$p2->getName();  // 小明

2

est différent de cela. Il pointe vers la classe elle-même et ne pointe vers aucun objet instancié. Il est généralement utilisé pour accéder aux variables statiques et les méthodes statiques d'une classe sont également des méthodes écrites dans la classe. La classe dans laquelle self est écrit indique la référence de la classe self

<?php
class Person {
    public static $name = "小红";
    public static function getName() {
        echo self::$name;
    }
}
$p = new Person();
$p2 = new Person();
$p::getName();  // 小红
$p2::getName();  // 小红
$p::$name = "小明";
$p::getName();  // 小明
$p2::getName();  // 小明

3,

Généralement utilisé Pour accéder aux variables statiques et aux méthodes statiques dans une classe, ce sont aussi des méthodes écrites dans la classe. C'est aussi la classe qui appelle la méthode static signifie que la classe (quelle classe est liée) static

<?php
class A {
    public function say() {
        echo "Hello";
    }
    public function saySelf() {
       //static 和 self 可以调用非静态方法  不能调用非静态属性  静态方法中不能有$this
      // static 和 self 可以写在非静态的方法中 ,可以使用对象调用
        self::say();
    }
    public function sayStatic() {
        static::say();
    }
}
class B extends A {
    public function say() {
        echo "World";
    }
}
$b = new B();
$b->say();  // World
$b->saySelf();  // Hello
$b->sayStatic();  // World

. Recommandations d'apprentissage associées :

Programmation PHP du débutant au compétent

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