Maison >développement back-end >tutoriel php >Explication détaillée de la différence entre self et static en php

Explication détaillée de la différence entre self et static en php

小云云
小云云original
2018-03-31 09:59:191755parcourir

En PHP, le mot-clé self peut représenter la classe actuelle et est généralement utilisé pour appeler des méthodes statiques ou des propriétés statiques de la classe actuelle. Mais en plus de pouvoir définir l'attribut static, static a également une fonction similaire à self (représentant la classe actuelle).

Mais il existe encore certaines différences entre les deux. Nous le vérifions grâce au code :

<?php
header("Content-Type:text/html;charset=utf-8");
Class A{
	public static $p1=1;
	public $p2=2;
	public static function showInfo(){
		echo "<br/>".self::$p1;
	}
	public static function showInfo2(){
		echo "<br/>".static::$p1;
	}
}
Class B extends A{
	static $p1=10;//此处覆盖继承过来的变量p1.
	public $p2=20;
	
}
A::showInfo();
echo "<br/>";
B::showInfo();
echo "<hr/>";
A::showInfo2();
echo "<br/>";
B::showInfo2();

Nous pouvons le voir d'après les résultats. :

Lorsque la méthode showInfo() est appelée, l'objet de sortie est self::$p1. À l'heure actuelle, même si la classe B hérite de la classe A et que la méthode héritée est appelée dans la classe B, ce qui est affiché est toujours la classe où se trouve le mot-clé self. Par conséquent, on peut dire que la classe actuelle représentée par self est principalement la classe où se trouve le code actuel.

Lorsque la méthode showInfo2() est appelée, l'objet de sortie est static ::$p1. À l’heure actuelle, les résultats de sortie sont différents. La classe A génère les attributs qu'elle appelle. B génère également les attributs qu'il appelle (la valeur de $p2 qui est écrasée après avoir hérité de la méthode de la classe A). Par conséquent : static représente la classe dans laquelle la méthode actuelle est appelée.

Par conséquent, bien que self et static puissent représenter la classe actuelle, leurs significations sont différentes.

Recommandations associées :

La différence entre self et static en PHP orienté objet

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