Pour se fixer les idées sur self et this

Publié dans PHP objet | Marqué avec , , , ,
Share

Voici un petit exemple pour bien comprendre ce qui se passe lorsque l’on utilise self ou $this, avec des attributs static ou non :

<?php
class DitBonjour {
	public static $fr = 'Coucou le monde !';
	public static $de = 'Guten tag!';
	public $en = 'Hello world!';
	public $es = 'Buenos dias!';
	function saluer()
	{
		echo '<strong>1. Public, static, direct :</strong> '.$this->de.'<br />';
		echo '<strong>2. Public, static, self :</strong> '.self::$fr.'<br />';
		echo '<strong>3. Public, direct :</strong> '.$this->en.'<br />';
		echo '<strong>4. Public, self :</strong> '.self::$es.'<br />';
	}
}
$appel = new DitBonjour();
$appel->saluer();
?>

Ce qui renvoie :

Notice: Undefined property: DitBonjour::$de in F:\bn\Web\Test\PHPObjet\test2.php on line 13
1. Protected, static, direct :
2. Protected, static, self : Coucou le monde !
3. Public, direct : Hello world!
Fatal error: Access to undeclared static property: DitBonjour::$es in F:\bn\Web\Test\PHPObjet\test2.php on line 16

Moralité

  • On ne peut accéder à un attribut static qu’avec self (ou parent, ou NomClass)
  • On ne peut accéder à un attribut non static avec self, on y accède avec $this

Une réponse à Pour se fixer les idées sur self et this

  1. jb

    Les variables static , c’est typiquement un truc que j’utilise jamais … je devrais peut etre? 😀

    Mais c’est bon à savoir pour quand je les utiliserais ^^ ! thanks

Leave a Reply to jb Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*