Conseil de conception

Petit nouveau ! | 3 Messages

06 sept. 2012, 09:38

Bonjour,

Je suis en train de développer une application comportant des affichages de tableau de données. J'ai donc créé une classe Donnee qui comporte les méthodes et champs associée à une donnée. Jusque là tout va bien. Dans mon application, j'ai donc un écran qui affiche un tableau des champs d'instances de Donnee.

Pour ce faire, j'ai créé une classe Application qui comporte la méthode AfficheDonnee. Cette méthode exécute la requête SQL de recherche des données en base, pour chaque résultat instancie Donnee et affiche les valeurs des champs des instances de Donnee. Est-ce la bonne façon de faire ?

Je me dis que pour un simple affichage, c'est peut être beaucoup d'opérations pour pas grand chose !

En supposant que je zappe la partie instanciation, où me conseillez-vous de mettre la méthode AfficheDonnee ? Dans la classe Application ou dans la classe Donnee ? et dans ce cas, quelle est l'utilité de la classe Application ?

Merci de vos conseils !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 sept. 2012, 10:33

salut,

je t'ai donnée des éléments de réponse dans ton autre post !

ta question reflète le fait que tu as surement mal compris le modèle objet et sont utilisation dans un modèle MVC :)

Dans le modèle objet tu a d'abord des entités qui représente quelque chose de "réelle" et les classes utilitaires / code métier.

Une entité c'est, vulgairement, un sac de données rien de plus !
par exemple si tu définis un article d'un magasin tu peux dire que
  • un article à une référence
  • un article à un nom
  • un article à une description
  • un article à un prix
cela reste minimaliste c'est pour l'exemple, cela peux être beaucoup plus complexe (le fabricant, le fournisseur, un Package etc qui seront des instances d'autre entité dans l'entité produits).

il en résulte cette classe (appelée pojo ou beans en java)
<?php
class produit {
	private $référence;
	private $nom;
	private $description;
	private $prix;
	/**
	 */
	function __construct() {
	}
	/**
	 * @return the $référence
	 */
	public function getRéférence() {
		return $this->référence;
	}

	/**
	 * @return the $nom
	 */
	public function getNom() {
		return $this->nom;
	}

	/**
	 * @return the $description
	 */
	public function getDescription() {
		return $this->description;
	}

	/**
	 * @return the $prix
	 */
	public function getPrix() {
		return $this->prix;
	}

	/**
	 * @param field_type $référence
	 */
	public function setRéférence($référence) {
		$this->référence = $référence;
	}

	/**
	 * @param field_type $nom
	 */
	public function setNom($nom) {
		$this->nom = $nom;
	}

	/**
	 * @param field_type $description
	 */
	public function setDescription($description) {
		$this->description = $description;
	}

	/**
	 * @param field_type $prix
	 */
	public function setPrix($prix) {
		$this->prix = $prix;
	}
}
?>
a partir de la ta classe Application et la méthode AfficheDonnees peux faire une requête avec PDO, en utilisant fetchAll avec l'option PDO::FETCH_CLASS tu aura un tableau de produits.
ave ça un foreach pour construire ton affichage.

en théorie tu devrais avoir une classe DAO qui fait la requête et fournit le tableau produit.
Cette classe DAO sera utilisée par la classe application pour construire l'affichage.


@+
Il en faut peu pour être heureux ......