Il est difficile d'expliquer cette situation, mais s'il vous plaît voir l'exemple.Base de données et les pratiques OOP en PHP
J'ai codé un site Web où la page se charge, j'initialise une classe de base de données. J'ai envoyé cette classe en tant que paramètre de fonction à toutes les fonctions qui ont besoin d'accéder à la base de données.
Je sais que c'est une mauvaise approche mais actuellement je n'ai aucune idée de la façon de le faire d'une autre manière. Pouvez-vous m'aider s'il vous plaît.
Exemple
class sms {
function log_sms($message, $db) {
$sql = "INSERT INTO `smslog` SET
`mesasge` = '$message'
";
$db->query($sql);
if ($db->result)
return true;
return false;
}
}
puis sur la page principale ..
$db = new db(username,pass,localhost,dbname);
$sms = new sms;
$sms->log_sms($message, $db);
Y at-il une meilleure approche que cela?
avez-vous une idée des temps de traitement de chacun? qui est plus rapide et qui est plus lent? Ou s'il n'y a pas beaucoup de différence alors chose du constructeur semble le plus simple pour moi :) –
Ooh, belle vue d'ensemble. Merci :) – Svish
Vous et moi comprenons les modèles 'Registry' et' ServiceLocator' différemment. Pour moi, votre registre ressemble à un ServiceLocator (un registre qui sait comment instancier des objets) et votre ServiceLocator ressemble bien ... à un ServiceLocator qui est implémenté dans une autre classe via la composition. Et rien ici ne ressemble à un registre. –