CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

pattern factory

billgates107
billgates107
Niveau 7
24 février 2014 à 00:43:42

Salut à tous j'aimerais juste savoir si ma classe est une implémentation correcte de la pattern factory car je pense avoir compris le principe mais c'est pour être sûr:
<?php
class Factory {
public static function load($classe){
$chemin = $classe . '.class.php';
if(file_exists($chemin)){
require $chemin;
return new $classe;
} else {
throw new Exception("La classe " . $classe . " n'existe pas.");

}
}
}

try {
$instance = Factory::load('MaClasse');
}

catch (Exception $e){
echo $e->getMessage();
}

Merci d'avance :)

Kimpeek
Kimpeek
Niveau 10
24 février 2014 à 18:11:10

Je suis débutant et je ne touche pas au PHP mais je crois que la fabrique sert à gérer plusieurs objets tout en profitant du polymorphisme.

Mais là tu utilises juste un loader de classe...

Kimpeek
Kimpeek
Niveau 10
24 février 2014 à 18:17:23

Apparemment ton code correspond à ce qui est expliqué ici :

http://fr.openclassrooms.com/informatique/cours/programmation-en-java-api/le-pattern-factory-1

ou sur le tuto php de victor thullier (c'est quasi le même code que le tien)

http://fr.openclassrooms.com/informatique/cours/programmez-en-oriente-objet-en-php/laisser-une-classe-creant-les-objets-le-pattern-factory

Donc je pense que oui, l'implémentation est correcte.

Au départ je pensais à quelque chose de plus générique genre :
http://come-david.developpez.com/tutoriels/dps/?page=Fabrique#LIV

.. dans lequel les méthodes utilisées dans la fabrique ne dépendent pas de l'objet ou des paramètres passés.

deepblue
deepblue
Niveau 16
24 février 2014 à 20:55:02

Un conteneur de service et l'injection de dépendances = pas de Factory.

Je n'ai pas testé mais si tu fais un appel sur ta Factory avec le même paramètre, ton second require va péter une erreur sur la redéfinition de la classe.

Pendant que j'y suis, ce n'est pas au Factory de faire le chargement de la classe (ton require), mais un autoloader. Ici, d'une page tu gères mal tes tests, tu risques de faire planter ton application (cf la 2nd remarque) et pour terminer, les espaces de nom sont oubliés.

deepblue
deepblue
Niveau 16
24 février 2014 à 23:02:16

Note : un conteneur de service est une sorte factory, mais il manque cruellement de théorie dans les exemples cités. Je ne suis pas certain que l'OP sache vraiment ce qu'il fait.

billgates107
billgates107
Niveau 7
25 février 2014 à 11:53:05

Ok je vois donc le pattern factory c'est plus:
class Factory {

}

billgates107
billgates107
Niveau 7
25 février 2014 à 12:01:57

Ok je vois donc le pattern factory c'est plus:
class Factory {
public static function getClasseConnexion(){
$connexion = new Classe;
return $connexion;
}
}

$instance = Factory::getClasseConnexion();

Par contre pour la deuxième remarque j'ai pas trop compris, pourquoi cela générait une erreur ?
Et pour finir si on regarde l'exemple du sdz:
http://fr.openclassrooms.com/informatique/cours/programmez-en-oriente-objet-en-php/laisser-une-classe-creant-les-objets-le-pattern-factory
Son premier exemple correspond à peu prés au mien, c'est une implémentation incorrecte du pattern ?

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment