L'extension de la classe MySQLi
Je veux être en mesure de créer des classes qui étendent la classe MySQLi pour exécuter toutes les requêtes SQL.
$mysql = new mysqli('localhost', 'root', 'password', 'database') or die('error connecting to the database');
Je ne sais pas comment le faire sans que la mondialisation de l' $mysql objet à utiliser dans mes autres méthodes ou classes.
class Blog {
public function comment() {
global $mysql;
//rest here
}
}
Toute aide serait appréciée.
Grâce.
Vous devez vous connecter pour publier un commentaire.
Ma suggestion est de créer un Singleton DataAccess classe instancier cette classe dans un fichier de configuration global et de l'appeler dans votre Blog de la classe comme
$query = DataAccess::query("SELECT * FROM blog WHERE id = ".$id)
.Regarder dans le pattern Singleton, c'est assez facile à comprendre designpattern. Parfait pour cette situation.
Votre DataAccess classe peut avoir plusieurs méthodes comme
query
,fetchAssoc
,numRows
,checkUniqueValue
,transactionStart
,transactionCommit
,transactionRollback
etc etc. Ces fonctions pourraient également être configuré comme une Interface qui obtient mis en œuvre par le DataAccess classe. De cette façon, vous pouvez facilement étendre votre DataAccess classe pour de multiples systèmes de gestion de base de données.Ci-dessus assez bien décrit mon DataAccess modèle.
Je travaille sur quelque chose de semblable. Je suis heureux de ce singleton classe qui encapsule la connexion de base de données.
À utiliser que vous pouvez avoir quelque chose comme ceci:
query()
etprepare()
depuis lemysqli
OO API fournit déjà de ceux-ci.Vous pouvez utiliser le PHP du mot-clé extends juste pour toute autre catégorie:
ou une meilleure utilisation de l'objet de l'agrégation à la place de l'héritage:
Ma méthode standard est de faire un singleton classe qui agit en tant que base de données de l'accesseur, et une classe de base que tout nécessitant un tel accès hérite.
Donc:
Ont un coup d'oeil à AOP, qui lève des exceptions pour vous de les attraper si une requête échoue. Il est largement utilisé et testé de sorte que vous ne devriez pas avoir de problème à trouver des solutions existantes tout en l'utilisant.
Pour l'injecter dans votre blog de la classe: