JeuWeb - Crée ton jeu par navigateur
Abstraction de Config avec PHP 5.3 - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Abstraction de Config avec PHP 5.3 (/showthread.php?tid=4984)

Pages : 1 2


RE: Abstraction de Config avec PHP 5.3 - niahoo - 27-07-2010

pour le pattern factory + singleton, mates "flyweight", c'est fait pour gérer plusieurs singletons ( d'ailleurs ça serait sympa pour l'OP pour gérer un singleton de buildings, de persos, etc.) mais ça doit pouvoir être utile pour un seul.


RE: Abstraction de Config avec PHP 5.3 - srm - 27-07-2010

Réflexion faite, je ne suis pas sûr que ça soit correcte de passer des paramêtres à un Singleton, si quelqu'un peut confirmer ou infirmer. J'ai plutôt l'impression que ça doit être définis dans le singleton lui même donc d'avoir un singleton différent pour chaque paramêtre plutôt que d'en avoir un généric qui prend en paramêtre comment tu veux l'initialiser.


RE: Abstraction de Config avec PHP 5.3 - niahoo - 27-07-2010

ben pour la config d'un site j'avais un singleton qui prenait en paramètre un fichier ini.
Mais parfois, pour certaines actions qui nécéssitaient d'avoir un droit d'écriture dans la DB ou accès à certaines pages d'admin, la config pouvait temporairement changer.

En gros c'était géré avec des exceptions : si tu passes un .ini au singleton alors qu'il est déjà initialisé, il te disait gentiment d'aller te faire voir, du coup tu devais utiliser une méthode changeConf, puis plus tard revenir à la configuration initale.

Mais bon c'était lourd, j'ai viré le singleton et je créais une nouvelle instance avec les paramètres d'admin en cas de besoin. Pour une classe très lourde je veux bien mais pour un fichier ini à la con ça sert pas à grand chose ( Dans le cadre de mon site qui était un petit site, avec peu de risques d'avoir 50 instances simultanément.)

Et c'est pourquoi je n'aime pas le singleton quand on fait des choses simples. Quand t'as 200 lignes de codes seulement suceptibles d'instancier une config tu peux très bien t'assurer qu'une seule instance existera.

Edit: disons plutot que je l'utilisais alors que je n'en avais pas besoin, le design pattern en lui même ne peut être une mauvaise chose.


RE: Abstraction de Config avec PHP 5.3 - srm - 27-07-2010

Car tu vois pour ton besoin précis, on peut le faire en Scala, mais ça donne un singleton like PHP et vu que le langage à un système de singleton de base c'est ce qui me laisse penser que ça n'est pas correcte et que ça doit être fait autrement.

Cependant j'ai fait ça qui je pense est assez propre et doit répondre au besoin :
Code PHP :
<?php 
object MaClasseSingleton
{
val id = Math.random
var file : String = _

def apply
(fileName : String) = {
file = fileName
this
}

def quiJeSuis() = "Je travail sur le fichier " + file + " (" + id + ")"

}

object Main extends Application {

println(MaClasseSingleton("bouh.ini") quiJeSuis)
println(MaClasseSingleton("bouh.ini") quiJeSuis)

}

Je travail sur le fichier bouh.ini (0.6683225103384194)
Je travail sur le fichier bouh.ini (0.6683225103384194)



RE: Abstraction de Config avec PHP 5.3 - niahoo - 27-07-2010

ok !
( bon c'est u peu chelou comme langage, le '"this"' qui se ballade au milieu comme ça.. )


RE: Abstraction de Config avec PHP 5.3 - srm - 27-07-2010

C'est l'équivalent de "Return this", en Ruby tu aurais fait pareil Wink

Il a largement plus chelou, mais à la fois diablement puissant dans ce langage, le currying par exemple.
Je vais essayer de vous faire un exemple simpliste quand j'aurais finis deux trois trucs


RE: Abstraction de Config avec PHP 5.3 - niahoo - 27-07-2010

( ben penses à faire un nouveau topic alors Tongue pasque là on est en train de défoncer ceui-ci )