Optimisation POO
Posté : 30 nov. 2013, 20:59
Bonjour,
Mon code actuel fonctionne mais j'ai l'impression d'avoir complexifier plus que nécessaire.
Je suis en train de créer une application PHP avec 2 connexions PDO (à 2 serveurs distinct), un système de permissions et qui puisse dans un avenir avoir une gestion des langues.
Plutôt que de créer des instances de mes classes (Database, Permission, Language) et de les trimballer partout dans les constructeurs, j'ai fait le choix de créer une classe GeneralConfig (Instanciation unique avec un singleton) qui contient deux instances de ma classe Database, une instance de ma classe Permission et une instance (Pour le moment vide) de ma classe Language ainsi que diverses variables nécessaire pour mon application.
N'y aurait-il pas un moyen d'éviter cet appel en changeant la structure ?
Merci d'avance.
Mon code actuel fonctionne mais j'ai l'impression d'avoir complexifier plus que nécessaire.
Je suis en train de créer une application PHP avec 2 connexions PDO (à 2 serveurs distinct), un système de permissions et qui puisse dans un avenir avoir une gestion des langues.
Plutôt que de créer des instances de mes classes (Database, Permission, Language) et de les trimballer partout dans les constructeurs, j'ai fait le choix de créer une classe GeneralConfig (Instanciation unique avec un singleton) qui contient deux instances de ma classe Database, une instance de ma classe Permission et une instance (Pour le moment vide) de ma classe Language ainsi que diverses variables nécessaire pour mon application.
class GeneralConfig{
private static $_configInstance;
public $sqlServer1;
public $sqlServer2;
public $permission;
public $language;
private function __construct()
{
$this->sqlServer1 = new Database();
$this->sqlServer2 = new Database();
$this->permission = new Permission();
$this->language = new Language();
}
public static function getInstance()
{
if(is_null(self::$_configInstance))
self::$_configInstance = new GeneralConfig();
return self::$_configInstance;
}
}
Pour mes classes "objet" (Account, Team, Item, Characters, ...), j'ai créer une classe parente ConfigModel pour que chacune de mes classes "objet" puisse accéder à l'instance unique de ma classe GeneralConfig (Et donc aux instances de Database, Permission et Language)abstract class ConfigModel{
protected static $_config = null;
protected static function initConfig()
{
self::$_config = GeneralConfig::getInstance();
}
protected function __construct()
{
self::initConfig();
}
}
Le soucis, c'est que dans chacune de mes classes filles "objet" (Account, Team, Item, Characters, ...), je dois appeler parent::initConfig() dans chaque methodes statiques (Account::searchByIP() par exemple).N'y aurait-il pas un moyen d'éviter cet appel en changeant la structure ?
Merci d'avance.