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.

 
Sélectionnez

<?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

 
Sélectionnez

<?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.

 
Sélectionnez

<?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.

 
Sélectionnez

<?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 "&#160;variable&#160;""

/**
 * 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.

 
Sélectionnez

<?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.

 
Sélectionnez

<?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

 
Sélectionnez

<?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

 
Sélectionnez

<?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.

Formation PHP Facile !
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.