On peut programmer de "l'objet" dans n'importe quel version de PHP, seulement PHP5 applique le standard de fomalisme objet qui n'était pas bien respecté par les versions antérieures telque l'encapsulation, l'héritage, le "vrai" comportement des constructeurs, le polymorphisme et l'affectation d'objet par référence.
Pour programmer en objet il faut connaitre au minimum ce concept au dela de PHP.
Ceci dit, programmer en linéaire ou en objet reste un choix. L'objet permet de faire évoluer le comportement du site développé et de le maintenir à moindre coûts (temps).
Exemple:
développer un connecteur à ma base de données à moindre coût :
En linéaire, on a souvent l'habitude soit d'écrire et de réécrire le code de connexion à la base dans toutes les pages qui en ont besoin.
ou alors utiliser des includes qui pointent vers une seule page où le code de connexion est écrit.
La première démarche est couteuse en développement puisqu'elle demande plus de temps et de compétences (chez le même programmeur)par contre la deuxième permet de spécialiser et de découper le developpement (chaque page est spécialisée = un programmeur spécialisé)
La méthode objet s'inspire de la deuxième méthode sauf que le code spécialisé est encapsulé dans un objet (variable mémoire porteuse de données et de fonctions spéciales) un seule objet peut être utilisé par toutes les pages du site qui ont besoin de ses services (à condition de mémoriser l'objet spécialisée dans une session partagée ou dans un fichier persistant).
La classe objet dans notre exemple peut être:
Page "connexion.class"
Class connexion {
//Donnée globale et privée à la classe
private $con;
//fonction d'exécution d'une requête donnée
public function exécuterSQL($sql){
//connecter au serveur
$this->con = mysql_connect("serveur","user","pwd") or die ("Serveur non disponible!");
//ouvrir la base
mysql_select_db("ma base", $this->con) or die ("Base de données non disponible!");
//exécuter la requête donnée
$req = mysql_query($sql, $this->con) or die ("Requête non exécutée!");
//explorer le resultat pour le transformer en tableau d'objets
while ($ligne = mysql_fetch_object($req)) {
$res[$i] = $ligne;
$i++;
}
//retourner le tableau assemblé
return $res;
}
}//fin de la classe
Cette classe permet d'exécuter une requête SQL donnée. Les programmeurs de mon site n'ont pas à connaitre ni à se soucier de comment se connecter à la base, ils peuvent utiliser cette classe pour exécuter des requêtes et manipuler leurs résultats dans leurs programmes.
Exemple d'utilisation :
Dans une page "catalogue de produits.php" :
<?
//Référence à la source de la classe
include ("connexion.class");
//Création d'un objet de la classe connexion
$serveur = new connexion();
//Exécuter une requête et récupérer son résultat
$liste_produits = $serveur->exécuterSQL("SELECT réf, désignation, prix FROM Produits");
//Afficher le tableau reçu sous forme de table HTML
echo "<table border=1><tr><th>Réf<th>Désignation<th>Prix";
if ($liste_produits != null)
foreach ($liste_produits as $produit) {
echo "<tr><td>".$produit->réf
."<td>".$produit->désignation
."<td>".$produit->prix;
}
echo "</table>";
?>
Y'a-t-il plus clair qu'un programme orienté objet !?