Constructeur d'objet, qu'est ce qui vaut le mieux ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Constructeur d'objet, qu'est ce qui vaut le mieux ?

par sadeq » 11 mai 2006, 16:58

Moi j'opte pour les 2 même si PHP5 ne peut tolérer la surcharge des fonctions et les multi-constructeurs.
Mais il existe une finte qui permet d'instaurer un modèle de multi-construction. Un exemple :
<?php 
class personne{ 
    //propriétés de la personne 
    private $id; 
    private $nom; 
    private $prenom; 

    //Base de données des personnes 
    private $liste; 
     
    //construction sans paramètres = objet vide 
    //construction avec paramètres = Nouvelle personne 
    function __construct($id=null, $nom=null, $prenom=null){ 
        $this->id = $id; 
        $this->nom = $nom; 
        $this->prenom = $prenom; 
    } 
    //méthodes de manipulation de la base de données 
    //Ajout 
    function add($personne){ 
        if (!$personne->id) $personne->id = count($this->liste); //Auto-incrément si id absent 
        $this->liste[$personne->id] = new personne(); //objet vide 
        $this->liste[$personne->id] = $personne; 
    } 
    //Consultation 
    function getById($id){ 
        return  $this->liste[$id]; 
    } 
    //... 
} 

//Test de la classe 
$base_personnes = new personne(); //objet personne servant comme base (objet vide) 
$marc = new personne(null,"Dubois", "Marc"); //Nouvelle personne Marc Dubois 
$pierre = new personne(null,"Leclerc", "Pierre"); //Nouvelle personne Pierre Leclerc 
$aline = new personne(5,"Lemaire", "Aline"); //Nouvelle personne Aline Lemaire n°5
//les inscrire dans la base (Ajout) 
$base_personnes->add($marc); 
$base_personnes->add($pierre); 
$base_personnes->add($aline); 

$qui_suis_je = $base_personnes->getById(0); //? il s'agit tout simplement de Marc Dubois le 1° enregistré 

//Découverte des objets 
echo "<pre>"; 
echo " 
La liste des personnes: 
"; 
print_r($base_personnes); 
echo " 
Identité de Marc: 
"; 
print_r($marc); 
echo " 
Identité de Pierre: 
"; 
print_r($pierre); 
echo " 
Identité de Aline: 
"; 
print_r($aline); 
echo " 
Qui est inscrit n° 0 ? 
"; 
print_r($qui_suis_je); 
echo "</pre>"; 
?>

par jeff » 11 mai 2006, 16:44

salut
solution : ouckileou

par ouckileou » 11 mai 2006, 15:20

Une autre solution aussi :
garder ta classe Personne avec attributs et méthodes d'accès à ceux-ci

Et créer une classe "manager", qui elle va comporter les méthodes liées à la base de données (insertion, récupération de 1 ou tous...)

par matique » 11 mai 2006, 15:11

Moi personnemment, je prendrai la premiere solution en créant une class Main avec une methode
function addPersonne($nom, $prenom){
    //creation de personne dans la base de données
    return new Personne(mysql_insert_id());
}

Constructeur d'objet, qu'est ce qui vaut le mieux ?

par delcedo galaxialord » 11 mai 2006, 14:22

Bonjour !

Admettons que j'ai une table dans ma base de données qui soit ainsi :
[personne]
- idPersonne
- nom
- prenom
Que vaut-il mieux avoir/faire :
<?php
class Personne {
    private $idf;
    private $nom;
    private $prenom;
    Personne($idf){
        $this->chargementApartirDelIdentifiant($idf);
    }
}
et dans ce cas, comment gérer l'ajout de personne ?

ou
<?php
class Personne {
    private $idf;
    private $nom;
    private $prenom;
    Personne($nom, $prenom){
        $this->nom = $nom;
        $this->prenom = $prenom;
    }
    function insere(){
        // ajoute dans la base de données
    }
}
?>
et dans ce cas comment faire pour charger la personne ?

Les théories de la Programmation Orientée Objet conseilleraient/feraient quoi ?

Merci !