Beruflich Dokumente
Kultur Dokumente
PHP5 CHAPITRE 1 :
PROGRAMMATION ORIENTE
OBJET
I. Classe et instance
Les oprations de base pour lutilisation des objets
sont :
la cration dune classe et la dfinition de ses
proprits et des mthodes qui vont permettre aux
objets crs partir de la classe dagir sur leurs
proprits ou de communiquer avec leur
environnement.
Vient ensuite la cration des objets proprement dits
en tant quinstances de la classe de base.
22/04/2014
Etape 1 :
Dclarez
Etape 2.
Ouvrez
Etape 3.
22/04/2014
Etape 4.
Dclarez
Etape 5.
Terminez
Syntaxe
class ma_classe
{
//Dfinition d'une constante
const lang="PHP 5";
//Dfinition des variables de la
classe
public $prop1;
public $prop2 ="valeur";
public $prop3 =
array("valeur0","valeur1");
//Initialisation interdite avec une
fonction PHP
//public $prop4= date(" d : m :
Y"); Provoque une erreur fatale
22/04/2014
<?php
class action
{
//Constante
const PARIS="Palais Brognard";
//variables propres de la classe
public $nom;
public $cours;
public $bourse="bourse de Paris ";
$now=getdate();
$heure= $now["hours"];
$jour= $now["wday"];
22/04/2014
<?php
require("objet2.php");
echo "Constante PARIS =",PARIS,"<br />";
echo "Nom = ",$nom,"<br />";
echo "Cours= ",$cours,"<br />";
echo "Bourse= ",$bourse,"<br />";
//info(); //L'appel de info()Provoque une erreur si vous
dcommentez la ligne
action::info();//fonctionne
echo "Constante PARIS =",action::PARIS,"<br />";
?>
22/04/2014
Rsultat
<?php
require("objet2.php");
//Cration d'une action
$action1= new action();
//Affectation de deux proprits
$action1>nom = "Mortendi";
$action1>cours = 15.15;
//Utilisation des proprits
echo "<b>L'action $action1>nom cote la $action1>bourse
vaut $action1>cours€</b><hr>";
//Appel d'une mthode
$action1>info();
22/04/2014
22/04/2014
22/04/2014
22/04/2014
<?php
class action
{
//Dfinition d'une constante
const PARIS="Palais Brognard";
const NEWYORK="Wall Street";
//Variables propres de la classe
public $nom ;
public $cours;
public $bourse=array("Paris ","9h00","18h00");
10
22/04/2014
11
22/04/2014
//Affichage du cours
if(isset($this>nom) && isset($this>cours))
{
echo "<b>L'action $this>nom cote la bourse de
{$this>bourse[0]} vaut $this>cours
€</b><br />";
}
}
}
?>
12
22/04/2014
<?php
require('objet5.php');
$client="Geelsen";
$mortendi = new action();
$mortendi>nom ="Mortendi";
$mortendi>cours="12.76";
$mortendi>info();
?>
13
22/04/2014
14
22/04/2014
Exemple
<?php
class acces
{
//Variables propres de la classe
public $varpub ="Proprit publique";
protected $varpro="Proprit protge";
private $varpriv="Proprit prive";
function lireprop()
{
echo "Lecture publique: $this>varpub","<br />";
echo "Lecture protge: $this>varpro","<br />";
echo "Lecture prive: $this>varpriv","<hr />";
}
}
Exemple (suite)
$objet=new acces();
$objet->lireprop();
echo "<hr />";
echo $objet>varpub;
//echo $objet->varpriv; Erreur fatale
//echo $objet->varpro; Erreur fatale
echo "<hr />";
foreach(get_class_vars('acces') as $prop=>$val)
{
echo "Proprit ",$prop ," = ",$val,"<br />";
}
?>
15
22/04/2014
<?php
class accesmeth
{
//Variables propres de la classe
private $code="Mon code priv";
16
22/04/2014
//Mthodes
//Mthode prive
private function lirepriv()
{
echo "Lire prive ",$this->code,"<br />";
}
//Mthode protge
protected function lirepro()
{
echo "Lire protge ",$this->code,"<br />";
}
//Mthode publique
public function lirepub()
{
echo "Lire publique : ",$this->code,"<br />";
$this->lirepro();
$this->lirepriv();
}
}
17
22/04/2014
18
22/04/2014
19
22/04/2014
<?php
class info
{
//Proprit statique
public static $bourse="Bourse de Paris";
20
22/04/2014
//Mthodes statiques
$heure=date("h : m : s");
return $heure;
return $texte;
21
22/04/2014
Remarque :
Lutilisation dune proprit statique dans un contexte objet
peut prsenter un danger.
En effet, dans lexemple prcdent, une nouvelle valeur est
affecte la proprit bourse.
Laffichage de cette proprit montre que cette affectation
est bien ralise.
En revanche, lappel de la mthode de lobjet qui utilise
cette proprit permet de constater que la proprit a
toujours la valeur qui a t dfinie dans la classe.
Pour pallier cet inconvnient, il faudrait ajouter la classe
une mthode spciale qui modifierait la proprit bourse
22
22/04/2014
<?php
class info
{
//Proprit statique
public static $bourse="Bourse de Paris";
//Mthodes statiques
public static function getheure()
{
$heure=date("h : m : s");
return $heure;
}
public function setbourse($val)
{
info::$bourse=$val;
}
23
22/04/2014
24
22/04/2014
25
22/04/2014
= new nom_classe(param1,param2,.)
26
22/04/2014
void __destruct()
<?php
class action
{
private $propnom;
private $propcours;
protected $propbourse;
27
22/04/2014
function __construct($nom,$cours,$bourse="Paris")
{
$this->propnom=$nom;
$this->propcours=$cours;
$this->propbourse=$bourse;
}
function __destruct()
{
echo "L'action $this->propnom n'existe plus!<br />";
}
}
//Cration d'objets
$alcotel = new action("Alcotel",10.21);
$bouch = new action("Bouch",9.11,"New York");
$bim = new action("BIM",34.50,"New York");
28
22/04/2014
Remarque :
La destruction explicite de lobjet Alcotel entrane
lappel du destructeur et laffichage dun message.
Par contre, la destruction explicite de lobjet $bim
ne provoque pas lappel du destructeur car il existe
encore une rfrence cet objet.
En consultant laffichage ralis par le script, vous
constatez quaprs le message de fin de script, le
destructeur est appel pour les objets $bim et
$bouch.
29
22/04/2014
I.7. Drfrencement
$varobj>methode() ;
Exemple 9. Drfrencement de
mthodes
<?php
class varchar
{
private $chaine;
function __construct($a)
{
$this->chaine= $a;
}
30
22/04/2014
Exemple 9. Drfrencement de
mthodes
function add($addch)
{
$this->chaine.=$addch;
return $this;
}
function getch()
{
return $this->chaine;
}
}
Exemple 9. Drfrencement de
mthodes
//Cration d'objet
$texte=new varchar("Apache ");
echo $texte->getch(),"<hr />";
echo $texte->add( " PHP 5 ")->getch(),"<hr />";
?>
31
22/04/2014
<?php
//Classe abstraite valeur
abstract class valeur
{
protected $nom;
protected $prix;
abstract protected function __construct() ;
abstract protected function getinfo();
}
//Classe action
class action extends valeur
{
private $bourse;
function __construct($nom,$prix,$bourse="Paris")
{
$this->nom=$nom;
$this->prix=$prix;
$this->bourse=$bourse;
}
32
22/04/2014
33
22/04/2014
34
22/04/2014
<?php
//Dfinition de la classe action
class action
{
public $nom;
function __construct($nom)
{
$this->nom=$nom;
}
function __destruct()
{
echo "L'action $this->nom n'existe plus!<br />";
}
}
35
22/04/2014
//Cration d'objets
$alcotel = new action("Alcotel",10.21);
$clone= clone $alcotel;
$bim=$alcotel;
$ref=&$bim;
36
22/04/2014
37
22/04/2014
38