2010-09-19 11 views
3

Je voudrais commencer par un peu de contexte, au cas où quelqu'un aurait de meilleures idées pour le design.Existe-t-il un équivalent à une liste d'initialisation en PHP?

Je cherche à créer une classe de base de données qui se connecte à une base de données lors de la construction. J'utiliserais des fonctions pour appeler la base de données, pour obtenir ce que je veux. La connexion à la base de données serait fermée à la destruction.

Depuis que je me connecte en construction, j'aimerais utiliser certaines propriétés dans le cadre de mysql_connect ... mais elles ne sont pas initialisées avant la construction. Je me demandais s'il y avait un moyen d'initialiser les variables membres comme une liste d'initialisation en C++, mais en PHP.

+0

Je ne connais pas très bien le C++ donc je ne connais pas le concept dont vous parlez, mais la manière habituelle en PHP serait de passer ces paramètres au constructeur: '$ var = new db (" localhost ", "username", "dbname", "password"); ' –

+0

Je pourrais passer les paramètres au constructeur ... mais alors toutes mes autres classes devraient connaître toutes les informations chaque fois que je veux utiliser ma base de données. Il semble qu'il y ait trop de duplication d'informations pour un design élégant - Theino – user452005

Répondre

1

créer un tableau de configuration et de passer à la classe que la base de données

$config = array(...); 
$db = new db($config); 

class db { 

    function __construct(array $config) { 
     if ($config) { 
      $this->db_name = $config['db_name']; 
      ..... 
     } 
    } 

} 

Si vos autres classes ont besoin les informations qu'ils peuvent utiliser le tableau aussi bien. Fondamentalement le registry pattern.

+0

Très utile Galen. Cela ressemble à la meilleure solution que j'ai trouvée à mon problème ... et une lecture intéressante aussi bien! Merci pour votre aide -Leino – user452005

0

Une option consisterait à avoir des constantes de classe. Je ne suis pas sûr, si c'est exactement ce que vous voulez, mais ils sont peut-être près de résoudre votre problème. PHP Class Constants

+0

J'ai regardé les constantes de classe, mais il semble que je ne puisse pas faire de constante privée en PHP! Corrigez-moi si je me trompe, mais c'est ce que j'ai lu. Je me sens mal en faisant une constante publique qui est mon mot de passe de base de données. -Leino – user452005