11.7 Programmation orientée-objet 443 références à cet objet. Il faut imaginer qu’un objet est constitué d’un espace réservé, désigné par une ou plusieurs variables. En particulier : 1. une affectation $o2 = $o1; fait de la variable $o2 une nouvelle référence vers l’objet déjà désigné par $o1 ; 2. un appel de fonction fonc($o1) transmet à la fonction une référence vers l’objet $o1. Toute opération appliquée à un objet par l’intermédiaire de l’une de ses références affecte l’unique zone réservée où les propriétés de l’objet sont stockées. Dans les cas ci-dessus, si on modifie une propriété de l’objet désigné par $o1, cette modification est visible par $o2 puisque les deux variables désignent le même objet. Si la fonction modifie le contenu de l’objet qui lui est passé en paramètre, ce changement reste effectif après la sortie de la fonction puisque la zone stockant l’objet est partagée par la fonction et le script principal. SPour effectuer une copie d’un objet afin d’éviter ces effets parfois non souhaités, il faut utiliser le « clonage » avec le mot-clé clone : // Copie de o1 dans o2 $o2 = clone $o1; La copie duplique simplement la zone mémoire représentant $o1 vers la zone représentant $o2. Ce n’est pas toujours la bonne technique car si $o1 contient lui- même, parmi ses propriétés, des références à d’autres objets, c’est la référence qui va être copiée et pas les objets eux-mêmes. Il est possible de contrôler le comportement de la copie en définissant une méthode __clone(). Deux objets sont égaux si les valeurs de leurs propriétés sont les mêmes. Ils sont identiques s’ils ont la même identité (autrement dit si les deux variables référencent le même objet). L’opérateur d’égalité est « == » et l’opérateur d’identité est « === ». 11.7.5 Compléments Plusieurs chapitres de ce livre donnent des exemples concrets de programmation objet : voir les classes BD, Tableau et Formulaire du chapitre 3, les classes et sous- classes de traitement d’un document XML page 339, et les classes du pattern MVC dans le chapitre 6.1. Ces classes illustrent non seulement les concepts orientés-objet et les constructions syntaxiques précédentes, mais elles montrent aussi comment les mettre en œuvre en pratique. Décortiquer une classe existante est souvent le meilleur moyen de comprendre l’approche objet et d’acquérir de bonnes pratiques. QUATRIÈME PARTIE Annexes Installation Apache/PHP/MySQL A Les instructions qui suivent permettent de compléter l’installation de MySQL. Elles sont valables aussi bien pour une installation Windows que pour une installation Linux. Les exemples donnés ci-dessous s’appliquent à ce dernier système mais sont aisément transposables à Windows. A.1 MOT DE PASSE ROOT Au moment de l’initialisation d’un serveur MySQL, il n’y a que deux utilisateurs : root@localhost avec tous les droits sur toutes les bases, et l’utilisateur anonyme "@localhost qui n’a aucun droit sur aucune base (sauf pour Windows). Vous pouvez consulter le contenu de la table user (voir page 448 pour une description des droits d’accès) avec les commandes suivantes. % mysql -u root mysql> USE mysql; Database changed mysql> SELECT * FROM user; Au départ, il est possible de se connecter sans entrer de mot de passe pour root, ce qui est très dangereux. La première chose à faire est d’attribuer un mot de passe à root avec la commande : mysql> set password for root@localhost = Password(’motdepasse’); Bien entendu vous devez choisir un mot de passe raisonnablement difficile à deviner. Vous pouvez alors vous connecter avec la commande suivante : % mysql -u root -p . est « == » et l’opérateur d’identité est « === ». 11.7.5 Compléments Plusieurs chapitres de ce livre donnent des exemples concrets de programmation objet : voir les classes BD, Tableau et Formulaire. avec les commandes suivantes. % mysql -u root mysql& gt; USE mysql; Database changed mysql& gt; SELECT * FROM user; Au départ, il est possible de se connecter sans entrer de mot de passe pour root, ce. un mot de passe à root avec la commande : mysql& gt; set password for root@localhost = Password(’motdepasse’); Bien entendu vous devez choisir un mot de passe raisonnablement difficile à deviner.