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.




