begin process at 2012 05 27 19:53:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > DESIGN PATTERNS - CREATEURS

DESIGN PATTERNS - CREATEURS


 Description

Parmi la liste des design pattern créateurs on trouve :

La Factory Method
Le Builder
Le Prototype
Le Singleton

A titre didactique, voici une façon de les implémenter en PhP.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CLIENT / SERVEUR : LES SOCKETS
CRÉER UN PARSEUR LL
Source avec Zip ABSTRACTHTML GENERATOR
Source avec Zip Source avec une capture DBOC - V3.1 [AJAX][PHP5]
Source avec Zip Source avec une capture DBOC 2.0 [AJAX][PHP5]

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
Source avec Zip Source avec une capture TODO LIST (AJAX/PHP5) par VinceMonkeyz
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
GESTION FTP (CLASSE) par shevabam
Source avec Zip Source avec une capture MY.EXCEPTION par inwebo

Commentaires et avis

Commentaire de neigedhiver le 09/01/2011 02:39:45

Salut,

Désolé, je n'ai jeté un oeil que rapidement, mais... bon ben je pense qu'on peut te faire confiance sur la qualité de la source.
En plus, de ce que j'ai vu, ça m'a l'air très propre. Et je doute qu'il y ait des erreurs grossières :)
Ca fait du bien de voir des sources pure POO, ça change ^^

Commentaire de DiGhan le 10/01/2011 04:45:18

Un peu complexe.

L'algo d'instanciation de la Factory est trop lourd : utilisation de eval(), func_get_args(). Dans ce cas, l'utilisation de la réflexion est tout à fait adaptée.

Pourquoi utiliser $class et $function dans l'exception alors que l'erreur est identifiable par l'exception qui l'a créé ? Si tu veux pousser la localisation de l'erreur tu peux t'aider d'Exception::getTrace().

Il n'y a pas d'erreurs mais des problèmes de conception et "d'optimisation".

Commentaire de Morphinof le 10/01/2011 09:48:20

Merci pour vos commentaires ;)

Pour la facory method j'avoue que c'est plutot lourd mais en fait j'ai eu quelque problemes avec call_user_function et j'ai trouve ca plus generique car par exemple on peu vouloir une classe avec un constructeur vide et un initialisateur et je sais plus exactement pourquoi mais ca m'a pose probleme a l'epoque j'aurais du noter exactement le soucis que j'avais eu, a la base je voulai eviter l'eval.
Pour l'exception et l'utilisation de $class et $function c'est que je trouve ca moins lourd a lire que getTrace() on sait direction de quelle classe et a quel appel l'exception a ete levee mais la c'est juste un choix esthetique en fait getTrace est plus verbose c'est sur ^^

Commentaire de bj33 le 10/01/2011 12:55:22

salut

Je n'ai visionné que la factory et franchement je ne suis pas du tout convaincu et ne changerais pas celle que j'utilise. ex :

final class Fabrique {
private static $_instance = null;
private $_namespace;

protected function __construct() {}

/**
* retourne une instance de la classe en tenant compte du namespace
         * si présent.
*
* @param $namespace
* @return object
*/
public static function getInstance($namespace = null) {
if (is_null(self::$_instance)) {
self::$_instance = new self;
}
self::$_instance->_namespace = $namespace;
return self::$_instance;
}

public function __call($methodes,$arguments) {
$classe = ucfirst(strtolower($this->_namespace.$methodes));
if (class_exists($classe,false)) {
$retourClasse = new ReflectionClass($classe);
if ($retourClasse->isInstantiable() && $retourClasse->hasMethod('__construct')) {
return $retourClasse->newInstanceArgs($arguments);
} else {
throw new Format_Generique('La classe '.$classe.' n\'est pas instanciable');
}
} else {
throw new Format_Generique('La classe '.$classe.' est introuvable');
}
}
}

si çà peut t'inspirer davantage;)

Commentaire de Morphinof le 10/01/2011 15:44:33

Question de point vue, la tienne fait : return $retourClasse->newInstanceArgs($arguments); ce que je voulai absolument eviter parce que ca t'oblige a implementer tes classe sous un format unique alors qu'avec la mienne c'est generique

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Class POO retourné le nom de l'objet [ par MeTh ] Bonjour,Comment retourné le nom de l'objet déclaré?exemple :$monobjet = new GridR();comment recuperé $monobjet dans ma class?Merci templates avec poo [ par lesnes ] bonjours je reprogramme totalement mon site en poo et je souhaiterai utiliser les templates mais l'on ne peut pas faire appel a une class exterieur a Probleme en POO [ par pablor44 ] Bonjour,alors voilà je vous explique mon probleme, je suis en train d'ecrire une classe en php pour mon site et je me retrouve dans la situation Gestion membres via POO [ par FhX ] Je me posais la question justement. Pour pouvoir faire une interface membre (donc : admin + membre + visiteur), dois-je faire ca en une seule classe ? logiciel POO [ par kowal2205 ] Je me pose la question de la création de mes classes dans un projet de taille moyenne car je ne trouve pas de logiciel à mon pied qui me per Reflexion sur un schema de POO (gestion d'emploi du temps d'une UFR) [ par Franquito ] Bonjour à tous ! Je dois réaliser un schema pour une application de programation orienté objet. L'application fait la gestion d'emploi du temps d'un Comment ca marche cette petite bete? [ par craso ] bonjour,en surfant, je suis tombé sur le site http://www.phpied.com/image-fun/ .Je souhaite qu'on m'explique comment trnsformer une image comme sur le réécriture d'un script en POO, comment faire? [ par craso ] Bonjour,j'ai développé cette petite application http://pipcorp.free.fr/Il s'agit d'une image clicable, le personnage centrale se positionne a l'endroi [POO] Développer son Framework [ par Foxhive ] Bonjour à tous, Cela fait longtemps que l'idée m'interesse mais j'ai jamais vraiment osé me jeter à l'eau. Mais là que je suis en vacance je me dis qu [POO] Avis à tous ! [ par FhX ] L'update de PHP5.2 est assez conséquent, je vous conseil de la lire :pY'a pas mal de trucs qui vont changer, surtout au niveux des interfaces (et tant


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales