PHP, Graphe enchainement.
Par Ramy • 29 Mai 2018 • 3 678 Mots (15 Pages) • 473 Vues
...
en utilisant le symbole &. Voici un exemple qui illustre bien le problème :
<?php
class compte
{
var $montant ;
function virer($valeur,&$destination)
{
$this->montant-=$valeur ;
$destination->montant+=$valeur ;
}
function afficher()
{
echo "montant=$this->montant<br>" ;
}
}
$compte1=new compte ;
$compte2=new compte ;
$compte1->montant=1000 ;
$compte2->montant=1000 ;
echo "compte1 :<br>" ;
$compte1->afficher() ;
echo "compte2 :<br>" ;
$compte2->afficher() ;
$compte1->virer(100,$compte2) ;
echo "compte1 :<br>" ;
$compte1->afficher() ;
echo "compte2 :<br>" ;
$compte2->afficher() ;
?>
Si vous omettez le signe & devant le paramêtre $destination, PHP affichera :
compte1 :
montant=1000
compte2 :
montant=1000
compte1 :
montant=900
compte2 :
montant=1000
Alors qu’en PHP5 (ou en PHP4 avec le &) on a :
compte1 :
montant=1000
compte2 :
montant=1000
compte1 :
montant=900
compte2 :
montant=1100
Auteur: Hubert Frauensohn PHP: classes 3/16
IUT de Metz - 2e année Support de cours
1.6 L’héritage.
Il est bon de définir des classes génériques, qui pourront être réutilisées et adaptées à tous vos projets. Pour
faciliter cela, une classe peut être une extension d’une autre classe. La classe dérivée hérite alors de toutes les
méthodes et variables de la classe de base, mais peut définir ses propres fonctions et variables, qui s’ajouteront.
Une classe ne peut hériter que d’une seule autre classe, et l’héritage multiple n’est pas supporté. Les héritages
se font avec le mot clé extends. Prenons pour exemple une classe Etudiant dérivée de la classe Personne qui
possède les mêmes variables que la classe Personne et la variable $etablissement en plus, ainsi que la fonction
setEtablissement() :
class Personne
{
var $prenom ;
var $nom ;
function Personne($prenom=’John’, $nom=’Doe’)
{
$this->prenom = $prenom ;
$this->nom = $nom ;
}
function info()
{
return "$this->prenom $this->nom" ;
}
}
class Etudiant extends Personne
{
var $etablissement ;
function setEtablissement($nomEt)
{
$this->etablissement = $nomEt ;
}
}
$etud=new Etudiant(’Jacques’,’Fillon’) ;
$etud->setEtablissement(’IUT de Metz’) ;
echo $etud->info() ; // appel d’une fonction membre de la classe de base
Si une classe n’a pas de constructeur, le constructeur de la classe de base est appelé, s’il existe. Ici le script
affiche :
Jacques Fillon
ce qui prouve que le constructeur de la classe personne est appelé.
Si vous rajoutez un constructeur (nommé ici Etudiant()), celui-ci sera appelé lors de la création de l’objet de
classe Etudiant, mais l’appel automatique du constructeur de la classe de base ne se fait pas automatiquement ;
avec la même classe de base :
Auteur: Hubert Frauensohn PHP: classes 4/16
IUT de Metz - 2e année Support de cours
class Etudiant extends Personne
{
var $etablissement ;
function setEtablissement($nomEt)
{
$this->etablissement = $nomEt ;
}
}
function Etudiant()
{
$this->etablissement=’inconnu’ ;
}
$etud=new
...