• Méthodes = Opérations
= Fonctions = Comportement
Les constantes de classe
Une constante est une sorte d'attribut appartenant à la classe dont la valeur ne change jamais.
Pour déclarer une constante, on doit précéder son nom du mot-clé « const ».
Pour accéder à une constante, on doit spécifier le nom de la classe, suivi du symbole double deux
points, suivi du nom de la constante.
Remarque
• Les deux mots-clés « const » et « define() » servent à
définir des constantes, quelle est donc la différence
entre les deux ?
Par convention :
• On donne l'extension .class.php aux fichiers des classes
• On définit une classe par fichier, et qui porte le même nom que sa classe
• Le nom de la classe commence par une majuscule et s’ecrit en Camel Case
• Les attributs et méthodes s’écrivent en Camel Case et commence par une
minuscule (ex: nomFamille, afficherNomFamille(), …)
• Les constantes s’écrivent tout en majuscule avec des underscore pour séparer les
mots (ex: AGE_MIN_REQUIS).
Les attributs statiques
• Un attribut statique est un attribut qui appartient à la classe elle-même et non pas son
instance (objet). C’est un attribut partagé entre toutes les instances de la classe.
La déclaration d'un attribut statique se fait en précédant son nom par « static » :
On peut créer plusieurs objets de la classe Voiture, l’attribut static aura toujours la même valeur,
sauf si l'objet lui même modifie sa valeur. Si c’est le cas, tous les autres objets qui accéderont
à cet attribut obtiendront la nouvelle valeur.
Les attributs statiques
• On n'accède pas à un attribut statique avec « $this » mais avec « self » !
• « self » représente la classe tandis que « $this » représente l'objet créé (l’instance courante).
Les méthodes statiques
Tout comme les attributs statiques, les méthodes statiques sont faites pour agir au niveau de la
classe elle-même et non pas sur son instance (objet).
Pour déclarer une méthode statique, on doit précéder le mot-clé function par « static »
● Publique : les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes
d'une classe définie avec le niveau de visibilité public. Il s'agit du plus bas niveau de protection
des données.
● Privée : l'accès aux données est limité aux méthodes de la classe elle-même. Il s'agit du niveau
de protection des données le plus élevé.
● Protégée : l'accès aux données est réservé aux fonctions des classes héritières, c'est-à-dire par
les fonctions membres de la classe ainsi que des classes dérivées.
● Friendly : c’est comme publique mais juste pour les classes du même package, ce niveau n’a pas
de mot-clé c’est celui adopté par défaut si on ne spécifie rien
L’encapsulation
Le constructeur
• Le rôle d'une fonction constructeur est de construire l'objet : c'est-à-dire de le préparer à une
première utilisation.
Le constructeur
On a deux types de constructeurs :
• Constructeur par défaut : Constructeur sans arguments qui initialise les
attributs à la valeur NULL.
• Constructeur avec arguments : Constructeur permettant d’initialiser les
attributs aux valeurs passées en paramètre.
• La méthode afficher(string)
• La méthode afficher(string, string)
• La méthode afficher(string, string, string)
Réponse :
• On utilise une classe abstraite s’il y’a un comportement (implémentation
de fonction) par défaut commune entre les classes filles
• On utilise une interface si les classes filles qui l’implémentent n’ont pas
besoin d’exhiber un comportement par défaut.
Les namespaces
Problématique :
• Comment créer deux constantes, deux
fonctions ou deux classes portant le même
nom ?
Solution :
• L'idée est la même que l'organisation des
fichiers.
Les namespaces
• Pour déclarer un namespace, il faut utiliser le
mot-clé namespace suivi du nom de l’espace
de nom à créer :
Les namespaces
• On va créer une fonction ayant le même nom
qu'une autre fournie par PHP :
Les namespaces
• Si on veut appeler une fonction du namespace
global : on doit précéder le nom de la fonction
d'un backslash (\), comme ceci :
Les namespaces
• Pour créer un namespace à l'intérieur d'un
autre, on écrira l'arborescence du namespace.
Ainsi, si on veut créer un namespace B dans A,
on fera comme ça :
Les namespaces
• Pour pouvoir appeler des constantes, fonctions ou classes d'un
namespace différent, il suffit de spécifier le namespace auquel
appartient l'élément juste avant de l'appeler. Comme pour les
fichiers, il y a deux façons de procéder :
• __get fait l’inverse, elle est appelée lorsqu’on essaye de retrouver une
valeur, et prend comme argument le nom de l’attribut qu’on a tenté
d’appeler.
Fonctions magiques
Fonctions magiques
• La méthode __call est appelée lorsque l'on essaye d'appeler
une méthode qu'on n'y a pas accès (soit elle n'existe pas, soit
elle est privée).