Skip to content

Les Objets en PHP

La programmation orienté objet (POO)

En PHP, il existe des types de bases : int, string, bool etc. Chaque type possede donc une information et chaque type peut etre manipuler via des opérateur. La POO repose sur la création par l’utilisateur de nouveau types de données. On décrit donc l’information qu’on peut appliquer à ce type de données. La POO en PHP5 introduit trois concepts fondamentaux :

  • l’encapsulation : qui permet de masquer les détails de l’information, de protéger ses données et rendre accessible l’interface publique de la classe
  • l’héritage : qui est le méchanisme permettant de définir une classe à partir d’une autre classe existante sauf si la classe est « FINAL ». La nouvelle classe créee dispose de l’ensemble des membres PUBLIC et PROTECTED de la classe dont elle hérite. Il sera alors possible de modifier le membre hérité.
    Pour définir si un objet peut hériter d’une autre classe, il faut se poser la question suivante : Est-ce que B est un A. Il existe différents types d’héritage : spécialisation et généralisation.

    Si B hérite de A, B est une spécialisation de A et B est une généralisation de B.
  • le polymorphisme : qui est la capacité pour un objet d’être manipulé comme s’il s’agissait d’un autre type. Meme structure mais propriété différentes. On parle d’un objet instancié lorsque ce dernier à été crée. Ce dernier pouvant etre instancié par une des classe qu’il hérite.

LA POO doit permettre une plus grande maintenance du code et une réutilisation des composants. Il est fortement recommandé d’utiliser des objets. Un objet pour etre manipulé n’as pas d’obligation de création.

Définition d’un objet

La classe est une description de l’objet. Une classe est définie par :

  • Les propriétés de l’objet qui sont les données optionnelles
  • Les méthodes de l’objet sont les traitements, les opérations portant sur les données. Elles sont égalements optionnelles
PHP 4 PHP 5
class nomClass {
	[propriétés;
	méthodes;]
}
class nomClass {
	[propriétés;
	méthodes;]
}
Pas de notions de PPP. Une ressource (propriété/méthode) est forcément et automatiquement publique

class nomClass {
	var propriété; // tout le monde
}
[final] class nomClass {
	private propriété; // que la classe peut y acceder
	protected propriété; // classe + enfants
	public propriété; // tout le monde
	final propriété; // tout le monde sauf enfants
	methodes;
}

propriété PUBLIC par défaut

var $hauteur = 12;
public $hauteur = 12;
class nomClass{
	function nomFonction([...]){
		//instructions
	}
}

Attention: Toutes les methodes en PHP4 sont publiques

class nomClass{
	[private][protected][public][final]function nomFonction([...]){
		//instructions
	}
}

Sans mots clé PPP, la méthode est automatiquement publique.

class nomClass {
	var $propriete; // tout le monde
	function nomFonction([...]){
		$this->propriete = 'val';
		nomClass::$propriete = 'val';
		$this->nomFonction();
	}
}
[final] class nomClass {
	private $priv;
	protected $prot;
	public $pub;
	final $fin;
	[...] function nomFonction([...]){
		$this->vip = 'val';
		$this->prot = 'val';
		$this->pub = 'val';
		$this->fin = 'val';

		nomClass::$vip = 'val';
		nomClass::$prot = 'val';
		nomClass::$pub = 'val';
		nomClass::$fin = 'val';

		self::$vip = 'val';
		self::$prot = 'val';
		self::$pub = 'val';
		self::$fin = 'val';

		$this->nomFonction();
	}
}
On peut utiliser nomClass::propriété dans nomClass2 On peut utiliser nomClass::propriété dans nomClass2 si propriété est publique
Le constructeur porte le nom de la classe, il n’existe pas de destructeur.

class nomClass {
	function nomClass(){
		//instructions
	}
}
Le constructeur peut porter le nom de la classe, si __construct() est présent, il sera prioritaire. Le destructeur sera __destruct()

class nomClass {
	function nomClass(){
		//instructions
	}
	function __construct(){
		//instructions
	}
	function __destruct(){
		//instructions
	}
}
$objet = new nomClass([...]);
$objet = new nomClass([...]);

PHP5 est orienté objet. C’est à dire un paradigme de développement qui s’attache à représenter des entités du programme sous forme d’objet associant données et traitements

Propriété d’instance

Lorsqu’on parle de propriété d’instance, il s’agit d’une propriété associée a une instance particuliere d’une classe. Pour chaque objet, les propriétés leurs appartiennent

Propriétés des Public Private Protected (PPP) en PHP5

Pour définir une propriété, il faut définir sa visibilité : PRIVATE, PROTECTED ou PUBLIC.

La visibilité est une notion de l’objet en PHP5 permettant de définir, de déterminer la portée (scope) d’une propriété ou d’une méthode