Définir un objet PHP global?
Je viens de commencer le changement de mon projet de formulaire de la base de données mysql pour PDO. Dans mon projet, un nouvel Objet PDO est créé plus ou moins à droite le début de l'émission.
$dbh_pdo = new PDO("mysql:host=$db_url;dbname=$db_database_name", $db_user, $db_password);
Maintenant, je voudrais utiliser ce gestionnaire (est-ce le bon nom?) dans certains de fonctions et de classes. Est-il un moyen de rendre les objets mondial tout comme les variables, ou suis-je en train d'essayer quelque chose d'atrocement stupide, parce que je n'ai rien trouvé lors de la recherche sur le web ...
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez créer des objets globaux, tout comme toute autre variable:
Vous pouvez également vouloir vérifier le pattern Singleton, qui, fondamentalement, est une mondial, OO-style.
Cela étant dit, je vous recommande de ne pas utiliser de variables globales. Ils peuvent être une douleur lors de débogage et de test, car il est difficile de dire qui modifiés, utilisés ou accessibles parce que tout peut. Leur utilisation est généralement considéré comme une mauvaise pratique. Envisager de revoir votre conception un peu.
Je ne sais pas comment votre application ressemble, mais dire que vous avez été faire:
Vous devrait faire qu'au lieu:
Depuis le
TableCreator
classe nécessite un objet PDO pour fonctionner correctement, il est parfaitement logique pour passer de l'une d'elle lors de la création d'une instance.Vous allez utiliser
$GLOBALS['dbh_pdo']
au lieu de$dbh_pdo
à l'intérieur de toutes les fonctions. Ou vous pouvez utiliser le mot clé global, et l'utilisation$dbh_pdo
(c'est à direglobal $dbh_pdo
).$dbh_pdo
, ce qui est pourquoi j'ai évoqué la$GLOBALS
solution d'abord, il est plus facile de se rappeler de le faire.Vous pouvez également essayer d'utiliser un Singleton à transmettre un objet PDO pour vous. De cette façon, vous ne jamais avoir un objet PDO (et une connexion de base de données) dans toute demande qui économise de la mémoire/les ressources du serveur.