php4--> php5 ?

julie
Invité n'ayant pas de compte PHPfrance

08 avr. 2005, 12:40

Bonjour,
j'aimerais savoir s'il était difficile et long de "traduire" un projet en php4 vers php5 ? Je sais que php5 est orienté objet mais je ne vois pas vraiment la différence entre les deux en terme de code.
Est ce que quelqu'un aurait la bonté d'éclairer une gentille développeuse ? :oops:

Merci et bonne journée

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

08 avr. 2005, 13:20

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 !?
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène