3. Les Fonctions
Mr. JADLI AISSAM 3
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
une fonction peut être définie n’importe où dans un script.
function mafonction($x,$y,...)
{
//code de définition de la fonction
return $var;
}
mafonction($a,$b,...)
ou encore
mafonction(4,5,...)
La Syntaxe pour appeler la fonction:
Syntaxe pour déclarer une fonction :
4. Les Fonctions
Mr. JADLI AISSAM 4
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Tous les types de variables peuvent être renvoyés (tableaux et objets compris);
Exemple :
function carre($nombre) {
return $nombre * $nombre ;
}
echo carre(3) ; # affiche la valeur 9
5. Les Fonctions
Mr. JADLI AISSAM 5
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Les fonctions en PHP supportent :
le passage d’arguments par valeur (méthode par défaut),
le passage d’arguments par référence,
les valeurs par défaut des arguments.
Une liste d’arguments dont le nombre est variable ne fonctionne pas en PHP mais un
résultat similaire peut être obtenu en utilisant un tableau ;
6. Passage par valeur
Mr. JADLI AISSAM 6
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
C’est la méthode par défaut ;
Les variables changent leur valeur au sein de la fonction sans que ceci ait des
répercussions à l’extérieur de celle-ci ;
function f1($nombre) {
$nombre += 2 ;
echo $nombre ;
}
$x = 3 ;
f1($x) ; # affiche 5
echo $x ; # affiche 3
Exemple :
7. Passage par Reference
Mr. JADLI AISSAM 7
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Les variables sont affectées par des changements au sein de la fonction de façon
permanente en ajoutant un & devant le nom de la variable dans la définition de la
fonction
function f2( & $nombre) {
$nombre -= 2 ;
echo $nombre ;
}
$x = 3 ;
f1( $x) ; # affiche 5
echo $x ; # affiche 3
f2($yx) ; # affiche 1
echo $x ; # affiche 1
Exemple :
8. Valeurs par défaut
Mr. JADLI AISSAM 8
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
function annotation($type = "assez bien") {
echo "Vous avez". $type ." travaillé" ;
}
annotation("mal") ; # affiche Vous avez mal travaillé
annotation() ; # affiche Vous avez assez bien travaillé
Exemple :
PHP permet, comme en C++, de spécifier des valeurs par défaut
pour les arguments de type scalaire ;
Il suffit de spécifier la valeur par défaut avec un = dans la
déclaration de la fonction ;
9. Mode Strict
Mr. JADLI AISSAM 9
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
10. P.O.O
Mr. JADLI AISSAM 10
Person
+nom
+age
void afficher ()
void setAge ()
void getAge ()
Classe en UML Objets de la classe
<?php
class Person {
public $nom;
public $age;
function setnom($x) {
$this->nom = $x;
}
function getnom() {
return $this->nom;
} }
?>
En PHP, on définit une classe de la façon suivante :
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
11. P.O.O
Mr. JADLI AISSAM 11
En PHP, on définit une classe de la façon suivante :
<?php
class Person {
public $nom;
public $age;
function setnom($x) {
$this->nom = $x;
}
function getnom() {
return $this->nom;
} }
$p1 = new Person();
$p2 = new Person();
$p1->setnom('Karim');
$p2->setnom('Laila');
echo $p1->getnom();
echo "<br>";
echo $p2->getnom();
?>
Person
+nom
+age
void afficher ()
void setAge ()
void getAge ()
Classe en UML
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
12. P.O.O
Mr. JADLI AISSAM 12
Exemple
<?php
class Person {
public $nom;
public $age;
function setnom($x) {
$this->nom = $x;
}
function getnom() {
return $this->nom;
}
function setage($x) {
$this->age = $x;
}
function getage() {
return $this->age;
}
function afficher() {
echo "<br>";
echo "le nom =",$this-
>nom," et Age =",$this->age;
echo "<br>";
} }
$p1 = new Person();
$p2 = new Person();
$p1->setnom('Karim');
$p2->setnom('Laila');
$p1->setage(25);
$p2->setage(24);
echo $p1->getnom();
echo "<br>";
echo $p1->getage();
echo "<br>";
echo $p2->getnom();
echo "<br>";
echo $p2->getage();
$p1->afficher();
$p2->afficher(); ?>
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
13. P.O.O
Mr. JADLI AISSAM 13
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
voiture
-code
-marque
-puissance
-kilometrage
void mod_puiss (int) ;
void mod_kilo (int) ;
void afficher () ;
Implémenter la classe voiture en
langage PHP avec trois instances
différentes?
Ecrire un programme pour tester les
deux instances?
14. P.O.O
Mr. JADLI AISSAM 14
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
une classe –souvent comporte trois type des méthodes , à savoir :
Les constructeurs ;
Les accesseurs (en anglais accessor) qui fournissent des informations relatives à
l’état d’un objet, c’est-à-dire aux valeurs de certains de ses attributs
(généralement privés) sans les modifier ;
get_x(self)
get_nom(self)
Les mutateurs (en anglais mutator) qui modifient l’état d’un objet, donc les
valeurs de certains de ses attributs.
set_y(self,y)
set_nom(self,v_nom)
15. P.O.O
Mr. JADLI AISSAM 15
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<?php
class Person {
public $nom;
public $age;
function __construct($x,$y) {
$this->nom = $x;
$this->age = $y; }
function afficher() {
echo "<br>";
echo "le nom =",$this->nom," et Age =",$this->age;
echo "<br>"; } }
$p1 = new Person('Karim',25);
$p2 = new Person('Laila',24);
$p1->afficher();
$p2->afficher();
?>
16. Héritage
Mr. JADLI AISSAM 16
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
étudiant
enseignante
employé
nom
adresse
cnss
nom
adresse
cnops
Nom
adresse
nom
adresse
cne
17. Héritage
Mr. JADLI AISSAM 17
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Héritage en POO = Quand
une classe dérive d'une
autre classe.
Une classe héritée est
définie à l'aide du mot-clé
extend.
<?php
class Person {
public $nom;
public $age;
function __construct($x,$y) { }
function afficher() { }
}
class employe extends Person {
public $job;
function __construct($x,$y,$z) {
Person::__construct($x,$y);
$this->job = $z;
}
function afficher() {
Person::afficher();
echo "la fonction =",$this->job;
}
}
?>
Redéfinition
$p1 = new Person('Karim',25);
$p2 = new employe('Laila',24,"Manger");
$p1->afficher();
$p2->afficher();
18. Polymorphisme
Mr. JADLI AISSAM 18
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<?php
class Person {
public $nom;
public $age;
function __construct($x,$y) {
$this->nom = $x;
$this->age = $y; }
function afficher() {
echo "<br>";
echo "le nom =",$this->nom," et Age =",$this->age;
echo "<br>"; } }
class employe extends Person {
public $job;
function __construct($x,$y,$z) {
Person::__construct($x,$y);
$this->job = $z; }
function afficher() {
echo "<br>";
Person::afficher();
echo "la fonction =",$this->job;
} } ?>
<?php
$p1 = new Person('Karim',25);
$p2 = new employe('Laila',24,"Manger");
$p1->afficher();
$p2->afficher();
?>
19. Méthodes Statiques
Mr. JADLI AISSAM 19
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Les méthodes statiques peuvent être appelées directement, sans créer d'instance de classe.
<?php
class ClassName {
public static function staticMethod() {
echo "Hello World!";
}
}
ClassName::staticMethod();
?>
<?php
class greeting {
public static function welcome() {
echo "Hello World!";
}
}
class SomeOtherClass {
public function message() {
greeting::welcome();
}
}
?>
20. Attributs Statiques
Mr. JADLI AISSAM 20
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Les propriétés statiques peuvent être appelées directement, sans créer d'instance de classe.
<?php
class ClassName {
public static $staticProp = "W3Schools";
}
ClassName::staticProp();
?>
<?php
class pi {
public static $value=3.14159;
public function staticValue() {
return self::$value;
}
}
$pi = new pi();
echo $pi->staticValue();
?>
21. Les Formulaires
Mr. JADLI AISSAM 21
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
PHP permet de gérer efficacement les formulaires HTML.
formulaire.php/html cible.php
Action
Fonctionnement d'un formulaire
22. Les Formulaires
Mr. JADLI AISSAM 22
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
PHP permet de gérer efficacement les formulaires HTML.
<form action="action.php" method="post">
<p>Votre nom : <input type="text" name="nom" /></p>
<p>Votre âge : <input type="text" name="age" /></p>
<p><input type="submit" value="OK"></p>
</form>
Bonjour, <?php echo ($_POST['nom']); ?>.
Tu as <?php echo (int)$_POST['age']; ?> ans.
23. Les Formulaires
Mr. JADLI AISSAM 23
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Il existe de nombreuses méthodes, les plus courantes étant GET, HEAD et POST :
POST: Cette méthode est utilisée pour transmettre des données en vue d'un traitement à
une ressource (le plus souvent depuis un formulaire HTML).
GET : Une requête GET récupère les données à partir le serveur.
HEAD : Cette méthode ne demande que des informations sur la ressource, sans demander
la ressource elle-même.
PUT : Cette méthode permet de remplacer ou d'ajouter une ressource sur le serveur.
DELETE : Cette méthode permet de supprimer une ressource du serveur.
24. Les Formulaires
Mr. JADLI AISSAM 24
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
<form action="welcome_get.php" method="get">
Nom: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
25. Les Formulaires
Mr. JADLI AISSAM 25
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<form action='form_list.php' method=post>
<select name="choix">
<option value="choix1">Choix 1</option>
<option value="choix2">Choix 2</option>
<option value="choix3">Choix 3</option>
<option value="choix4">Choix 4</option>
</select>
<input type="submit" Value="send">
</form>
<?php
echo "Votre choix est ",$_POST["choix"];
?>
26. Les Formulaires
Mr. JADLI AISSAM 26
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<form action='form_case.php' method=post>
<input type="checkbox" name="case[]" value="case1" /> Choix1
<input type="checkbox" name="case[]" value="case2" /> Choix2
<input type="checkbox" name="case[]" value="case3" /> Choix3
<input type="submit" Value="send">
</form>
<?php
for($i=0;$i<count($_POST["case"]);$i++)
{
if(trim($_POST["case"][$i]) != "")
{ echo $_POST["case"][$i]."<br>";}
}
?>
27. Les Formulaires
Mr. JADLI AISSAM 27
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<form method="post" action="f2.php">
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<br><br>
<input type="submit" name="submit" value="Send">
</form>
<?php
echo "<br>";
echo $_post["gender"];
?>
28. Les Formulaires
Mr. JADLI AISSAM 28
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<form method="post" action="verif.php">
Votre email : <input type="text" name="email" size="20">
<input type="submit" value="OK">
</form>
<?php
$email = $_POST['email'];
$point = strpos($email,".");
$aroba = strpos($email,"@");
if($point=="")
{echo "Votre email doit comporter un <b>point</b>";}
elseif($aroba=='')
{echo "Votre email doit comporter un <b>'@'</b>";}
Else {echo "Votre email est:
'<a href="mailto:"."$email".""><b>$email</b></a>'";}?>
29. Les Formulaires
Mr. JADLI AISSAM 29
L e s F o r m u l a i r e s
L e s F o n c t i o n s P r o g ra m m a t i o n O r i e n t é O b j e t
<form method="post" action="verif.php">
Votre email : <input type="text" name="email" size="20">
<input type="submit" value="OK">
</form>
<?php
$email = $_POST['email'];
$point = strpos($email,".");
$aroba = strpos($email,"@");
if($point=="")
{echo "Votre email doit comporter un <b>point</b>";}
elseif($aroba=='')
{echo "Votre email doit comporter un <b>'@'</b>";}
Else {echo "Votre email est:
'<a href="mailto:"."$email".""><b>$email</b></a>'";}?>
Erreur n°1 : Votre email doit comporter un point !
Erreur n°2 : Votre email doit comporter un '@' !
Si pas d'erreur : Votre email est : email@email.com