I. Introduction▲
Apprenez à utiliser le langage PHP pour développer des sites Web dynamiques grâce, notamment, à l'interaction facile de ce langage avec les bases de données.
Ce langage est idéal pour créer des blogs ou des forums de discussion.
Avec la méthode "Développement Facile", vous allez pouvoir créer des sites Web dynamiques avec du contenu évolutif et une maintenance facilitée.
Retrouvez un extrait de la formation "PHP Facile", composée de plus de 30 cours professionnels pour vous aider à progresser rapidement avec la maîtrise du langage PHP.
II. Comment inclure des fichiers et arrêter vos scripts PHP▲
Dans cette vidéo, découvrez comment inclure des fichiers, des fonctions ou des classes dans votre script PHP.
Apprenez aussi à stopper l'exécution d'un script.
Ci-dessous, l'exemple de code.
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
//
inclusion
de
fichiers
contenant
des
classes
require_once("
classes
/
Mysql
.
php
"
);
require_once("
classes
/
Utils
.
php
"
);
//
arrêt
d'un
script
//
création
du
début
de
la
page.
echo "
Bonjour
<
br
/
>
<
br
/
>
"
;
//
$sNom
=
"Matthieu";
//
pour
bypasser
le
exit
//
Une
condition
n'est
pas
vérifiée,
stop
le
script.
if ($
sNom
=
=
NULL)
exit("
<
b
>
Utilisateur
inconnu
.
Erreur
!
!
!
<
/
b
>
"
);
//
Poursuivre
la
création
de
la
page.
echo $
sNom
;
?>
Le contenu du fichier Mysql.php
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
/**
*
@file
Mysql
.
php
*
*
*
@version
0
.
1
@usage
$oSqlConnection
=
new
Mysql
(
)
;
$
s_sqlSelect
=
"
SELECT
nbvisiteur
FROM
compteur_visite
WHERE
ip
=
'
192
.
168
.
0
.
23
'
"
;
$
o_sqlResult
=
$oSqlConnection
->query(
$
s_sqlSelect
)
;
while
(
$
o_result
=
$oSqlConnection
->getObject(
$
o_sqlResult
)
)
{
/
/
caract
?
ristiques
des
messages
$
n_nbVisiteur
=
$o_result
->nbvisiteur
;
}
*/
/**
*
@note
:
dans
l
'
avenir
cette
classe
étendra
la
classe
PHP5
mysqli
*
*/
class Mysql
{
private $
oLinkSql
;
private $
oResult
;
private $
aConnect
;
//
----------------------------------
__construct()
----------------------------------------------------------
/**
*
@brief
*
@param
-
*/
public function __construct()
{
//
initialisation
des
propriétés
de
la
classe
$this
->aConnect
=
array();
/*
delfiweb
*/
$this
->aConnect
[
'
ip
'
]
=
"
localhost
"
;
//
le
serveur
$this
->aConnect
[
'
login
'
]
=
"
login
"
;
//
le
login
$this
->aConnect
[
'
password
'
]
=
"
mot_de_passe
"
;
//
mot
de
passe
$this
->aConnect
[
'
database
'
]
=
"
nom_base
"
;
//
nom
de
la
base
de
données
$this
->aConnect
[
'
port
'
]
=
"
3306
"
;
//
//
adresse
id
$_SERVER["REMOTE_ADDR"];
if ( $this
->oLinkSql
=
@
mysqli_connect( $this
->aConnect
[
'
ip
'
]
,
$this
->aConnect
[
'
login
'
]
,
$this
->aConnect
[
'
password
'
]
,
$this
->aConnect
[
'
database
'
]
,
$this
->aConnect
[
'
port
'
]
) )
{
$
is_erreur
=
false ;
$
sql
=
'
SET
CHARACTER
SET
\'utf8\'
'
;
$this
->query
($
sql
);
$
sql
=
'
SET
collation_connection
=
\'utf8_general_ci\'
'
;
$this
->query
($
sql
);
}
else //
connexion
error
->
redirection
to
a
webpage
{
echo "
<
meta
http
-
equiv
=
\
"
refresh\
"
content
=
\
"
0
;
URL
=
erreurs
/
erreurBDD
.
htm\
"
>
"
;
exit;
}
}
//
-----------------------------------------------------------------------------------------------------------
//
-------------------------------------------
PUBLIC
FUNCTIONS
---------------------------------------------
//
-----------------------------------------------------------------------------------------------------------
/**
*
Return
database
config
*
*
@access
public
*
@param
requete
*
@return
:
an
array
with
config
of
database
*/
public function getConfig()
{
return $this
->aConnect
;
}
/**
*
Execute
a
query
*
*
@access
public
*
@param
requete
*
@return
:
FALSE
in
error
else
an
objet
who
contain
the
result
.
*/
public function query($
sSqlQuery
)
{
if ( $this
->oResult
=
@
mysqli_query($this
->oLinkSql
,
$
sSqlQuery
) ) return $this
->oResult
;
else return '
Query
:
'
.
$
sSqlQuery
.
'
-
error
:
'
.
@
mysqli_error($this
->oLinkSql
);
}
/*
*
Give
the
result
in
an
object.
*
*
@access
public
*
@param
$oResultQuery
if
we
get
the
result
of
another
query
*/
public function getObject($
oResultQuery
=
NULL)
{
//
give
the
result
of
another
query
if($
oResultQuery
!
=
NULL)
{
return @
mysqli_fetch_object($
oResultQuery
);
if ( @
mysqli_error($this
->oLinkSql
) ) return @
mysqli_error($this
->oLinkSql
);
}
//
give
the
result
of
the
current
query
if ($this
->oResult
!
=
NULL)
{
return mysqli_fetch_object($this
->oResult
);
if ( @
mysqli_error($this
->oLinkSql
) ) return @
mysqli_error($this
->oLinkSql
);
}
}
//
----------------------------------
getNumRows()
----------------------------------------------------------
/**
*
@brief
give
the
number
of
affected
rows
by
the
last
query
.
*
@return
(
integer
)
number
of
affected
rows
.
*/
public function getNumRows()
{
if( $this
->oLinkSql
!
=
NULL &
&
$this
->oLinkSql
!
=
false)
{
return @
mysqli_affected_rows($this
->oLinkSql
);
if (@
mysqli_error($this
->oLinkSql
)) return @
mysqli_error($this
->oLinkSql
);
}
}
//
----------------------------------
lastInsertId()
----------------------------------------------------------
/**
*
@brief
give
the
last
insert
id
.
by
the
last
query
.
*
@return
(
integer
)
the
last
insert
id
.
*/
public function lastInsertId()
{
return @
mysqli_insert_id($this
->oLinkSql
);
}
//
-----------------------------------------------------------------------------------------------------------
//
-----------------------------------------
Others
----------------------------------------------------------
//
-----------------------------------------------------------------------------------------------------------
/**
*
@brief
*
*
@return
*/
public function __destruct()
{
$this
->oLinkSql
=
NULL ;
$
b_rep
=
@
mysqli_close($this
->oLinkSql
);
if( $
b_rep
!
=
true )
return '
Erreur
closing
sql
connexion!
'
;
}
//
----------------------------------------
__toString()
----------------------------------------------------
/**
*
@brief
Returns
the
string
representation
of
this
instance
.
*
@usage
echo
(
myObject
)
ou
print
(
myObject
)
*
@return
the
string
representation
of
this
instance
.
*/
public function __toString()
{
$
s_classContent
=
"
[
Object
"
.
__CLASS__.
"
]
<
br
/
>
"
;
foreach($
this
as $
prop
=
>
$
value
)
{
$
s_classContent
.
=
"
$
prop
=
>
$
value
<
br
/
>
"
;
}
return $
s_classContent
;
}
}
?>
Le contenu du fichier Utils.php à placer dans un répertoire classe dans le dossier du code exemple.
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
/**
*
@file
Utils
.
php
*
*/
class Utils
{
//
----------------------------------
__construct()
----------------------------------------------------------
/**
*
@brief
*
@param
-
*/
private function __construct()
{
}
//
-----------------------------------------------------------------------------------------------------------
//
-------------------------------------------
PUBLIC
FUNCTIONS
---------------------------------------------
//
-----------------------------------------------------------------------------------------------------------
//
----------------------------------------
getDateFr()
----------------------------------------------------
/**
formats
of
the
date
:
$
i_format
=
1
:
01
Janvier
2006
$
i_format
=
2
:
01
-
01
-
2006
$
i_format
=
3
:
Janvier
2006
$
i_format
=
4
:
2006
$
i_format
=
7
:
01
/
01
/
2006
$
i_format
=
NULL
:
01
-
01
-
2006
les
différents
formats
de
l
'
heure
retournent
:
$
i_time
=
NULL
:
H
:
i
:
s
$
i_time
=
1
:
Hhi
(
10h12
)
*
@brief
Convert
DATETIME
MySQL
in
fr
.
*
@param
(
string
)
DATETIME
MYSQL
.
*
@param
(
integer
)
date
format
.
*
@param
(
integer
)
hour
format
.
*
@return
(
array
)
array
.
$
a_convertDate
[
"
date
"
]
=
$
s_date
;
-
-
$
a_convertDate
[
"
time
"
]
=
$
i_time
;
*/
public static function getDateFr($
s_dateTime
,
$
i_format
,
$
i_time
=
-
1
)
{
$
a_convertDate
=
array();
$
month
=
"
"
;
$
s_date
=
"
"
;
$
s_year
=
substr($
s_dateTime
,
0
,
4
);
$
s_month_given
=
substr($
s_dateTime
,
5
,
2
);
$
s_day_given
=
substr($
s_dateTime
,
8
,
2
);
if ($
i_format
=
=
1
or $
i_format
=
=
3
)
{
switch($
s_month_given
)
{
case "
01
"
:
$
month
=
"
Janvier
"
;
break;
case "
02
"
:
$
month
=
"
Février
"
;
break;
case "
03
"
:
$
month
=
"
Mars
"
;
break;
case "
04
"
:
$
month
=
"
Avril
"
;
break;
case "
05
"
:
$
month
=
"
Mai
"
;
break;
case "
06
"
:
$
month
=
"
Juin
"
;
break;
case "
07
"
:
$
month
=
"
Juillet
"
;
break;
case "
08
"
:
$
month
=
"
Août
"
;
break;
case "
09
"
:
$
month
=
"
Septembre
"
;
break;
case "
10
"
:
$
month
=
"
Octobre
"
;
break;
case "
11
"
:
$
month
=
"
Novembre
"
;
break;
case "
12
"
:
$
month
=
"
Décembre
"
;
break;
}
if ($
i_format
=
=
1
) $
s_date
=
"
$
s_day_given
$
month
$
s_year
"
;
if ($
i_format
=
=
3
) $
s_date
=
$
month
.
"
"
.
$
s_year
;
}
if ($
i_format
=
=
2
) $
s_date
=
$
s_day_given
.
"
-
"
.
$
s_month_given
.
"
-
"
.
$
s_year
;
if ($
i_format
=
=
4
) $
s_date
=
$
s_year
;
/*
date
in
number
*/
if ($
i_format
=
=
"
7
"
) {
$
s_date
=
$
s_day_given
.
"
/
"
.
$
s_month_given
.
"
/
"
.
$
s_year
;
}
if ($
i_format
=
=
"
"
) {
$
s_date
=
$
s_day_given
.
"
-
"
.
$
s_month_given
.
"
-
"
.
$
s_year
;
}
$
a_convertDate
[
"
date
"
]
=
$
s_date
;
/*
give
the
hours
*/
$
s_heure
=
substr($
s_dateTime
,
11
,
2
);
$
s_minute
=
substr($
s_dateTime
,
14
,
2
);
$
s_seconde
=
substr($
s_dateTime
,
17
,
2
);
if( $
i_time
=
=
1
)
$
a_convertDate
[
"
time
"
]
=
$
s_heure
.
"
h
"
.
$
s_minute
;
//
Hhi
else
$
a_convertDate
[
"
time
"
]
=
substr($
s_dateTime
,
11
,
8
);
//
H:i:s
return $
a_convertDate
;
}
//
-----------------------------------------------------------------------------------------------------------
//
-----------------------------------------
Others
----------------------------------------------------------
//
-----------------------------------------------------------------------------------------------------------
/**
*
@brief
*
*
@return
*/
public function __destruct()
{
}
//
----------------------------------------
__toString()
----------------------------------------------------
/**
*
@brief
Returns
the
string
representation
of
this
instance
.
*
@usage
echo
(
myObject
)
ou
print
(
myObject
)
*
@return
the
string
representation
of
this
instance
.
*/
public function __toString()
{
$
s_classContent
=
"
[
Object
"
.
__CLASS__.
"
]
<
br
/
>
"
;
foreach($
this
as $
prop
=
>
$
value
)
{
$
s_classContent
.
=
"
$
prop
=
>
$
value
<
br
/
>
"
;
}
return $
s_classContent
;
}
}
?>
III. Comment créer et utiliser la puissance des fonctions en PHP▲
Découvrez dans cette vidéo, pourquoi et comment créer des fonctions en PHP.
Avec PHP, vous pouvez stocker une fonction dans une variable, passer un nombre quelconque de paramètres et les récupérer dans un tableau.
Ci-dessous, l'exemple de code.
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
echo "
les
fonctions
<
br
/
>
<
br
/
>
"
;
/**
*
Fonction
sans
paramètre
qui
affiche
"
Bonjour
!
"
*
*
pas
de
valeur
de
retour
.
*
*/
function afficheHello()
{
echo "
Bonjour
!
<
br
/
>
"
;
}
/**
*
Fonction
avec
2
paramètres
qui
retourne
le
produit
*
des
deux
paramètres
.
*/
function multiplieValeurs($
nVal1
,
$
nVal2
)
{
return $
nVal1
*
$
nVal2
;
}
//
Appel
de
la
fonction
afficheHello.
afficheHello();
//
Utilisations
de
la
fonction
multiplieValeurs
//
-
dans
une
affectation
$
nResult
=
multiplieValeurs(2
,
4
);
echo "
2
x
4
=
"
.
$
nResult
.
"
<
br
/
>
"
;
//
-
dans
une
comparaison
if (multiplieValeurs(10
,
12
) >
100
)
{
echo "
10
x
12
est
superieur
a
100
.
<
br
/
>
"
;
}
//
exemple
avec
une
valeur
de
retour
comme
un
tableau
/**
*
Définition
d
'
une
fonction
qui
retourne
un
tableau
.
*
@return
[
type
]
[
description
]
*/
function getIdentite()
{
return [
"
Matthieu
"
,
"
Developpement
"
]
;
}
//
Appel
de
la
fonction
et
récupération
directe
de
la
valeur
echo "
qui
=
"
.
getIdentite()[
0
]
.
"
<
br
/
>
"
;
//
Les
fonctions
" variable ""
/**
*
Fonction
qui
effectue
une
multiplication
.
*
@param
[
type
]
$
nVal1
[
description
]
*
@param
[
type
]
$
nVal2
[
description
]
*
@return
[
type
]
[
description
]
*/
function getProduit($
nVal1
,
$
nVal2
)
{
return ($
nVal1
*
$
nVal2
);
}
/**
*
Fonction
qui
effectue
une
addition
.
*
@param
[
type
]
$
nVal1
[
description
]
*
@param
[
type
]
$
nVal2
[
description
]
*
@return
[
type
]
[
description
]
*/
function getSomme($
nVal1
,
$
nVal2
)
{
return ($
nVal1
+
$
nVal2
);
}
/**
*
Fonction
qui
effectue
un
calcul
,
*
le
nom
du
calcul
est
passé
en
paramètre
.
*
*/
function getCalcul($
name_operation
,
$
nVal1
,
$
nVal2
)
{
//
$name_operation
contient
le
nom
de
la
fonction
//
à
exécuter
=>
appel
$name_operation().
return ($
name_operation
($
nVal1
,
$
nVal2
));
}
//
Utilisation
de
la
fonction
calculer.
echo "
<
br
/
>
3
+
5
=
"
.
getCalcul('
getSomme
'
,
3
,
5
).
"
<
br
/
>
"
;
echo "
3
*
5
=
"
.
getCalcul('
getProduit
'
,
3
,
5
).
"
<
br
/
>
<
br
/
>
"
;
//
passage
par
référence
/**
*
Définition
d
'
une
fonction
qui
prend
un
paramètre
.
*
@param
[
type
]
$
paramètre
[
description
]
*
@return
[
type
]
[
description
]
*/
function parReference(&
$
nValue
)
{
$
nValue
+
+
;
//
Affichage
de
la
valeur
echo "
Valeur
function
=
"
.
$
nValue
.
"
<
br
/
>
"
;
}
//
Initialisation
d'une
variable.
$
nVal
=
3
;
echo "
avant
appel
=
"
.
$
nVal
.
"
<
br
/
>
"
;
//
Appel
de
la
fonction
en
utilisant
la
variable
comme
valeur
parReference($
nVal
);
//
Affichage
de
la
variable
après
l'appel
à
la
fonction.
echo "
apres
appel
=
"
.
$
nVal
.
"
<
br
/
>
<
br
/
>
"
;
//
les
paramètres
/**
*
Fonction
qui
accepte
un
premier
paramètre
par
référence
*
et
qui
y
stocke
le
produit
de
tous
les
autres
paramètres
.
*/
function getMultiple(&
$
nResult
)
{
//
en
fonction
du
nombre
d'arguments
de
la
fonction
switch (func_num_args())
{
case 1
:
//
Un
seul
paramètre
//
Retourner
0.
$
nResult
=
0
;
break;
default:
//
Récupérer
les
paramètres
dans
un
tableau
//
et
supprimer
le
premier
paramètre.
$
aParam
=
func_get_args();
unset($
aParam
[
0
]
);
$
nResult
=
1
;
//
Initialiser
le
résultat
à
1.
//
boucle
sur
le
tableau
des
paramètres
//
pour
multiplier
le
résultat
par
le
paramètre.
foreach($
aParam
as $
paramètre
)
{
$
nResult
*
=
$
paramètre
;
}
}
}
$
nValeur
=
0
;
getMultiple($
nValeur
);
echo "
produit
(
$
nValeur
)
=
>
"
.
$
nValeur
.
"
<
br
/
>
"
;
getMultiple($
nValeur
,
1
,
2
,
3
);
echo "
produit
(
nValeur
,
1
,
2
,
3
)
=
>
"
.
$
nValeur
.
"
<
br
/
>
"
;
?>
IV. Comment utiliser la programmation orientée objet et les classes en PHP ▲
Découvrez dans cette vidéo, le concept du langage objet et comment l'implémenter en PHP.
Ci-dessous l'exemple de code.
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
/**
*
Définition
d
'
une
classe
qui
stocke
des
informations
sur
une
personne
.
*
*/
class Personne
{
//
Définition
des
attributs.
//
public $
nom
;
//
nom
de
la
personne
public $
prenom
;
//
prénom
de
la
personne
public $
langue
=
"
fr_FR
"
;
//
langue
de
la
personne
//
français
par
défaut
private $
timestamp
;
//
date/heure
de
création
(privé)
//
Définition
des
méthodes
:
/**
*
le
constructeur
*
@param
[
type
]
$
prenom
[
description
]
*
@param
[
type
]
$
nom
[
description
]
*/
public function __construct($
sPrenom
,
$
sNom
)
{
//
Init
le
nom
et
le
prénom
//
avec
les
valeurs
passées
en
paramètre.
$this
->prenom
=
$
sPrenom
;
$this
->nom
=
$
sNom
;
//
Init
timestamp
avec
la
fonction
time().
$this
->timestamp
=
time();
}
/**
*
Le
destructeur
*
Pour
supprimer
des
ressources
.
.
.
*/
public function __destruct()
{
//
afficher
un
message.
echo "
<
p
>
<
b
>
Suppression
de
"
.
$this
->nom
.
"
"
.
$this
->prenom
.
"
<
/
b
>
<
/
p
>
"
;
}
/**
*
Conversion
de
l
'
objet
en
chaîne
*
@return
string
[
description
]
*/
public function __toString()
{
//
Retourne
juste
le
nom
et
le
prénom.
return "
__toString
=
"
.
$this
->nom
.
"
-
"
.
$this
->prenom
;
}
/**
*
Met
à
jour
la
langue
de
l
'
utilisateur
.
*
@param
[
type
]
$
sLangue
[
description
]
*
@return
[
type
]
[
description
]
*/
public function langue($
sLangue
)
{
$this
->langue
=
$
sLangue
;
}
/**
*
met
en
forme
la
date
/
heure
de
création
de
la
personne
.
*
*/
private function setTimestamp()
{
setlocale(LC_TIME,
$this
->langue
);
return strftime('
%c
'
,
$this
->timestamp
);
}
/**
*
Renvoie
les
informations
de
la
personne
*
@return
[
type
]
[
description
]
*/
public function getInfos()
{
$
sDateCreate
=
$this
->setTimestamp
();
return $this
->prenom
.
"
"
.
$this
->nom
.
"
-
"
.
$
sDateCreate
;
}
}
//
instanciation
de
la
classe
//
Instanciation
d'un
objet.
$oProgrammeur
=
new Personne("
Matthieu
"
,
"
Developpement
"
);
//
La
variable
$oProgrammeur
contient
maintenant
un
objet
basé
sur
la
//
classe
utilisateur.
//
Les
méthodes
sont
accessibles
avec
l'opérateur
->.
//
Utilisation
des
méthodes
de
l'objet
Personne.
echo $oProgrammeur
->getInfos
().
"
<
br
/
>
<
br
/
>
"
;
$oProgrammeur
->langue
("
en_US
"
);
//
modification
de
la
langue
echo $oProgrammeur
->getInfos
().
"
<
br
/
>
<
br
/
>
"
;
//
Modification
et
lecture
directe
d'un
attribut
public
$oProgrammeur
->nom
=
strtoupper($oProgrammeur
->nom
);
echo $oProgrammeur
->nom
.
"
<
br
/
>
<
br
/
>
"
;
//
Affichage
direct
de
l'objet
=>
utilisation
de
__toString
echo $
oProgrammeur
.
"
<
br
/
>
<
br
/
>
"
;
//
création
d'un
autre
objet
avec
la
même
classe
Personne
$oProgrammeur2
=
new Personne("
Yannick
"
,
"
ActionScript
"
);
echo $oProgrammeur2
->getInfos
().
"
<
br
/
>
<
br
/
>
"
;
$oProgrammeur2
->nom
=
strtoupper($oProgrammeur2
->nom
);
echo $oProgrammeur2
->getInfos
().
"
<
br
/
>
"
;
?>
V. Comment profiter de la puissance de l'héritage en PHP ▲
Découvrez dans cette vidéo, comment ajouter facilement une ou plusieurs fonctionnalités à une classe existante en PHP.
C'est une technique très répandue en programmation orientée objet.
Ci-dessous l'exemple de code.
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
/**
*
Définition
d
'
une
classe
qui
stocke
des
informations
sur
une
personne
.
*
*/
class Personne
{
//
Définition
des
attributs.
//
public $
nom
;
//
nom
de
la
personne
public $
prenom
;
//
prénom
de
la
personne
public $
langue
=
"
fr_FR
"
;
//
langue
de
la
personne
//
français
par
défaut
private $
timestamp
;
//
date/heure
de
création
(privé)
//
Définition
des
méthodes
:
/**
*
le
constructeur
*
@param
[
type
]
$
prenom
[
description
]
*
@param
[
type
]
$
nom
[
description
]
*/
public function __construct($
sPrenom
,
$
sNom
)
{
//
Init
le
nom
et
le
prénom
//
avec
les
valeurs
passées
en
paramètre.
$this
->prenom
=
$
sPrenom
;
$this
->nom
=
$
sNom
;
//
Init
timestamp
avec
la
fonction
time().
$this
->timestamp
=
time();
}
/**
*
Le
destructeur
*
Pour
supprimer
des
ressources
.
.
.
*/
public function __destruct()
{
//
afficher
un
message.
echo "
<
p
>
<
b
>
Suppression
de
"
.
$this
->nom
.
"
"
.
$this
->prenom
.
"
<
/
b
>
<
/
p
>
"
;
}
/**
*
Conversion
de
l
'
objet
en
chaîne
*
@return
string
[
description
]
*/
public function __toString()
{
//
Retourne
juste
le
nom
et
le
prénom.
return "
__toString
=
"
.
$this
->nom
.
"
-
"
.
$this
->prenom
;
}
/**
*
Met
à
jour
la
langue
de
l
'
utilisateur
.
*
@param
[
type
]
$
sLangue
[
description
]
*
@return
[
type
]
[
description
]
*/
public function langue($
sLangue
)
{
$this
->langue
=
$
sLangue
;
}
/**
*
met
en
forme
la
date
/
heure
de
création
de
la
personne
.
*
*/
private function setTimestamp()
{
setlocale(LC_TIME,
$this
->langue
);
return strftime('
%c
'
,
$this
->timestamp
);
}
/**
*
Renvoie
les
informations
de
la
personne
*
@return
[
type
]
[
description
]
*/
public function getInfos()
{
$
sDateCreate
=
$this
->setTimestamp
();
return $this
->prenom
.
"
"
.
$this
->nom
.
"
-
"
.
$
sDateCreate
;
}
}
/**
*
Définition
d
'
une
classe
qui
hérite
de
la
première
.
*/
class PersonneHum extends Personne
{
//
Définition
des
attributs
complémentaires.
public $
sexe
;
//
sexe
de
la
personne
(homme
ou
femme)
//
Définition
des
méthodes
complémentaires.
/**
*
Le
constructeur
*
@param
[
type
]
$
prenom
[
description
]
*
@param
[
type
]
$
sexe
[
description
]
*/
public function __construct($
sPrenom
,
$
sName
,
$
sSexe
)
{
//
Appel
au
constructeur
de
la
classe
mère
parent:
:
__construct ($
sPrenom
,
$
sName
);
$this
->sexe
=
$
sSexe
;
}
/**
*
Renvoie
le
sexe
de
la
personne
*
@return
[
type
]
[
description
]
*/
public function getSexe()
{
return $this
->sexe
;
}
}
//
instanciation
de
la
classe
//
Instanciation
d'un
objet.
$oProgrammeur
=
new PersonneHum("
Matthieu
"
,
"
Developpement
"
,
"
Homme
"
);
echo $oProgrammeur
->getInfos
().
"
<
br
/
>
"
;
//
existe
par
héritage
echo $oProgrammeur
->prenom
.
"
<
br
/
>
"
;
//
existe
par
héritage
echo $oProgrammeur
->getSexe
().
"
<
br
/
>
"
;
//
existe
dans
la
classe
fille
?>
VI. Comment les classes abstraites peuvent vous sauver la vie en PHP ▲
Découvrez dans ce cours vidéo, une technique de programmation qui reprend les avantages de l'héritage sans les inconvénients.
Ci-dessous, l'exemple de code
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
/**
*
Définition
d
'
une
classe
abstraite
.
*/
abstract class classeMere
{
//
attribut
protégé
(utilisable
uniquement
par
les
classes
filles)
protected $
sValeur
;
//
deux
méthodes
pour
accéder
à
l'attribut
protégé
/**
*
Renvoie
la
valeur
*
@return
[
type
]
[
description
]
*/
public function getValue()
{
return $this
->sValeur
;
}
//
-
pour
écrire,
méthode
abstraite
abstract public function setValue($
valeur
);
}
//
Définition
d'une
classe
fille
qui
hérite
de
la
classe
mère.
class classeFille extends classeMere
{
/**
*
Implémentation
de
la
méthode
d
'
écriture
.
*
@param
[
type
]
$
valeur
[
description
]
*/
public function setValue($
valeur
)
{
$this
->sValeur
=
$
valeur
;
}
}
//
Utilisation
de
la
classe
fille.
$objet
=
new classeFille();
$objet
->setValue
(283269123
);
echo $objet
->getValue
().
"
<
br
/
>
"
;
?>
VII. Pourquoi utiliser les classes finales en PHP▲
Toutes les explications sur l'utilisation des classes finales en PHP, dans ce cour vidéo.
Ci-dessous, l'exemple de code
<?php
/**
The
Initial
Developer
of
the
Original
Code
is
Matthieu
-
http
:
/
/
www
.
programmation
-
facile
.
com
/
Portions
created
by
the
Initial
Developer
are
Copyright
(
C
)
2013
the
Initial
Developer
.
All
Rights
Reserved
.
Contributor
(
s
)
:
*/
/**
*
Définition
d
'
une
classe
abstraite
.
*/
class classeMere
{
//
attribut
protégé
(utilisable
uniquement
par
les
classes
filles)
protected $
sValeur
;
//
deux
méthodes
pour
accéder
à
l'attribut
protégé
/**
*
Renvoie
la
valeur
*
@return
[
type
]
[
description
]
*/
public function getValue()
{
return $this
->sValeur
;
}
/**
*
Méthode
finale
,
impossible
de
l
'
utiliser
dans
une
classe
fille
*
@return
[
type
]
[
description
]
*/
final public function pasPossible()
{
echo "
Méthode
finale
dans
la
classe
mère
"
;
}
}
//
Définition
d'une
classe
fille
qui
hérite
de
la
classe
mère.
class classeFille extends classeMere
{
/**
*
Implémentation
de
la
méthode
d
'
'
'
écriture
.
*
@param
[
type
]
$
valeur
[
description
]
*/
public function setValue($
valeur
)
{
$this
->sValeur
=
$
valeur
;
}
/**
*
Tentative
de
modification
de
la
méthode
finale
.
*
@return
[
type
]
[
description
]
*/
public function pasPossible()
{
echo "
Méthode
finale
dans
la
classe
fille
"
;
//
génère
un
message
d'erreur
-
Fatal
error:
Cannot
override
final
method
-
}
}
//
Utilisation
de
la
classe
fille.
$objet
=
new classeFille();
$objet
->setValue
(283212369
);
echo $objet
->getValue
().
"
<
br
/
>
"
;
?>
VIII. Recevez gratuitement la formation "PHP Facile"▲
Si vous souhaitez aller plus loin dans la création de sites Web dynamique,
vous pouvez recevoir gratuitement la formation "PHP Facile" avec des cours pas à pas, accompagnés des codes source commentés.
Ainsi, vous progressez à votre rythme, avec un suivi personnalisé et individuel. Vous avez la possibilité de poser toutes vos questions techniques sous chaque cours.
Vous allez ainsi découvrir comment utiliser le langage PHP et les bases de données MySQL.
Cliquez simplement ici pour recevoir gratuitement la formation "PHP Facile" !Cliquez simplement ici pour recevoir gratuitement la Formation PHP Facile !
IX. Remerciements▲
Merci beaucoup à l'équipe de rédaction de Developpez.com de contribuer à la diffusion de ce tutoriel.
J'adresse également un merci tout particulier à Jacques Jeanjacques_jean pour sa relecture orthographique.