Skip to content

Création, visibilité et normes des ressources

PRIVATE

La ressource définie en tant que PRIVATE signifie qu’elle peut être uniquement accessible dans la classe dans laquelle elle à étée définie.

PROTECTED

La ressource définie en tant que PROTECTED signifie qu’elle peut être uniquement accessible dans la classe dans laquelle elle à étée définie et dans les classes qui en hérite.

PUBLIC

La ressource définie en tant que PUBLIC signifie qu’elle peut être uniquement accessible à l’ensemble des objets et de l’exterieur.

FINAL

La méthode définie en tant que FINAL signifie qu’elle est accessible par tous, mais ne peut être remplacée par une classe fille.

La classe définie en tant que FINAL signifie qu’elle ne peut avoir d’enfants.

Conseil

On peut déclarer des variables les unes à la suite des autres séparées par des virgules en tant que propriétés d’une classe :

public var1,var2,var3...;

Attention : déclarer des variables comme précédement n’est pas conseiller pour la documentation automatique. (PHPDoc ne comprend pas cette déclaration)

Si on place le mot clé var en PHP5.0.x, PHP retournera une erreur de type I_STRICT. A partir de la 5.1.x, plus d’erreurs : la variable est considérée comme publique. Un propriété ayant une valeur dans sa déclaration, à chaque instance de l’objet, les objets auront la meme valeur par défaut.

Acceder à l’élément d’une classe

Pour accéder à une propriété ou à une méthode de la classse, on emploira les mots :

  • $this : qui permet de définir l’objet en question permettant d’acceder à une ressource de lui même si et seulement si elle n’est pas STATIC
  • nomClass : qui permet d’acceder à une ressource d’une classe à partir de l’exterieur.
  • self : qui permet d’acceder aux ressource de la classe elle meme

L’opérateur de résolution de portée

Il fournit un moyen d’acceder aux membres static ou constant de l’objet. On peut acceder à une propriété sans nécéssairement instancier l’objet, à condition que la ressource soit définie en tant que constante ou statique.

Syntaxe d’une constante

Une constante se définie par le mot clé const puis le nom de la constante sans $ :

classe PDO(){
	const FETCH_ASSOC = 1;
}

Syntaxe de STATIC

Une ressource statique sera définie avec le mot clé STATIC devant la valeur de visibilité :

classe test(){
	const CONSTANTE = 1;
	static public $ok = 0;
	static public function okTest(){
		return self::$ok;
	}
}
test::okTest();
test::$ok;
test::CONSTANTE;

self & parent

Ces deux mots clés spécifiques sont utilisés pour accéder aux ressources depuis la définition de la classe. self désignant l’objet lui même et parent désignant les ressource de la classe dont elle hérite.

this

Pour acceder à une ressource de la classe, on utilisera $this->nomMethode() ou $this->propriete.

Conventions et Normes

Création de classes

Par convention, une classe par fichierqui sera nommé nomClass.class.php ou class.nomClass.php. Ces nommages ne sont pas valides pour les normes MVC.

Création de méthodes

On nommera getNomPropriete() pour les accesseurs et setNomPropriété() pour les mutateurs.

Commentaires

PHP Documentor

Pour les propriétés
/**
*	@var type $var définition
*/
$var;
Pour les methodes
/**
*	définition
*	[@param type $var definition
*	...]
*	[@return type1|type2 défintion]
*/

Accéder à une classe

Manipulation avec NEW

include('nomClass.class.php');
$obj = new nomClass();

New permet l’instanciation de l’objet et entraine l’éxécution du constructeur, c’est une « méthode magique ».
Lorsque l’objet est détruit, une autre méthode magique est appelée seulement en PHP5 qui est le destructeur.
En règle générale, on utilise le constructeur pour initialiser les propriétés d’une classe.
Attention : un constructeur ne retourne jamais quoi que ce soit. En PHP5, la méthode __construct sera prioritaire sur la méthode du meme nom
que la classe. Le destructeur à en regle général pour rôle de libérer les ressources utilisées par l’objet ou encore de supprimer des fichiers
temporaires. De la meme maniere, le déstructeur ne retourne jamais rien.

Appel des méthodes

Une méthode est appellée apres instanciation d’un objet si et seulement si elle n’est pas statique

include('nomClass.class.php');
$obj = new nomClass();
$obj->getVar();

STATIC en PHP5

Lorsqu’on attribue à une ressource le terme STATIC, celle-ci est PUBLIC. Dès lors qu’une ressource est statique, elle n’a pas besoin d’être instanciée pour être manipulée. Une propriété de classe static éxiste pour l’ensemble des instances de la classe. Les méthodes de la classe statiques ne peut acceder qu’aux propriétés de la classe. Pour utiliser les memebres de la classe static, on utilisera l’opérateur de résolution de portée précédé par le self en interne, le parent pour une classe héritée ou le nom d’une classe. Les valeurs d’une propriété STATIC seront modifiables par tous

Passage par référence

La nouveauté : lorsqu’on assigne un objet à une variable, le passage se fait par référence en PHP5, contrairement à PHP4 qui passe par valeur. Par référence, toute modification de ma variable sera répercuté sur mon objet

$A = new A();
$var = $A
$var->setVar(3);
echo $A->getVar(); // 3

Pour contrer ce comportement de passage par référence en PHP5, on utilisera le mot clé clone

Le mot clé CLONE

Le mot clé clone se place apres l’opérateur d’assignation. En spécifiant clone, on impose le passage par valeur et non plus par référence. Lorsqu’on clone un objet, PHP appele une méthode magique nommée __clone(). On pourra spécifier dans cette méthode les propriétés à ne pas passer par référence. Vooir ce lien sur le cloning