Quelle est d'après vous la meilleure pratique pour avoir accès, dans les
fonctions d'un grand projet php, à un handler de base de données ?
Je ne travaille que sur des projets modestes, et je place mon handler dans
un tableau que j'accède par des "global" dans mes fonctions.
Ca me parait largement perfectible (sans parler des connexions persistantes
que je n'utilise pas encore).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
loufoque
Voici comment je fais.
au début de tous les scripts $sql = new SQL; puis global $sql quand besoin est.
Ensuite, la connexion ne s'effectue que dans le cas où il y en a besoin (lors d'une requête par exemple) et non lors de la construction de la classe, comme avec Pear par exemple.
Le principe des connexions persistantes est simple, on utilise pconnect() à la place de connect().
Voici comment je fais.
au début de tous les scripts
$sql = new SQL;
puis global $sql quand besoin est.
Ensuite, la connexion ne s'effectue que dans le cas où il y en a besoin
(lors d'une requête par exemple) et non lors de la construction de la
classe, comme avec Pear par exemple.
Le principe des connexions persistantes est simple, on utilise
pconnect() à la place de connect().
au début de tous les scripts $sql = new SQL; puis global $sql quand besoin est.
Ensuite, la connexion ne s'effectue que dans le cas où il y en a besoin (lors d'une requête par exemple) et non lors de la construction de la classe, comme avec Pear par exemple.
Le principe des connexions persistantes est simple, on utilise pconnect() à la place de connect().
ED
Nicolas Ecarnot wrote:
Je ne travaille que sur des projets modestes, et je place mon handler dans un tableau que j'accède par des "global" dans mes fonctions.
(je parle là de mysql mais ça vaut pour les autres) Il ne faut pas hésiter à utiliser la fonction mysql_connect() à profusion. PHP gère en effet lui-même un cache de ce coté là. Si on redemande une connexion avec les mêmes paramètres PHP ne recontacte pas le serveur mais réutilise (et retourne) l'ancienne.
Je ne dis pas que c'est forcément la meilleure solution mais il ne faut pas avoir peur de faire plusieurs fois ces appels. En interne il n'y aura pas de connexion ouverte après la première fois.
Cette fonctionnalité cumulée à la possibilité de ne rien remplir dans mysql_connect() et d'utiliser les utilisateur / mot de passe / hote par défaut définis dans le php.ini (ou via ini_set au lancement du script), ça devient tout à fait utilisable.
-- Eric
Nicolas Ecarnot wrote:
Je ne travaille que sur des projets modestes, et je place mon handler dans
un tableau que j'accède par des "global" dans mes fonctions.
(je parle là de mysql mais ça vaut pour les autres)
Il ne faut pas hésiter à utiliser la fonction mysql_connect() à
profusion. PHP gère en effet lui-même un cache de ce coté là. Si on
redemande une connexion avec les mêmes paramètres PHP ne recontacte pas
le serveur mais réutilise (et retourne) l'ancienne.
Je ne dis pas que c'est forcément la meilleure solution mais il ne faut
pas avoir peur de faire plusieurs fois ces appels. En interne il n'y
aura pas de connexion ouverte après la première fois.
Cette fonctionnalité cumulée à la possibilité de ne rien remplir dans
mysql_connect() et d'utiliser les utilisateur / mot de passe / hote par
défaut définis dans le php.ini (ou via ini_set au lancement du script),
ça devient tout à fait utilisable.
Je ne travaille que sur des projets modestes, et je place mon handler dans un tableau que j'accède par des "global" dans mes fonctions.
(je parle là de mysql mais ça vaut pour les autres) Il ne faut pas hésiter à utiliser la fonction mysql_connect() à profusion. PHP gère en effet lui-même un cache de ce coté là. Si on redemande une connexion avec les mêmes paramètres PHP ne recontacte pas le serveur mais réutilise (et retourne) l'ancienne.
Je ne dis pas que c'est forcément la meilleure solution mais il ne faut pas avoir peur de faire plusieurs fois ces appels. En interne il n'y aura pas de connexion ouverte après la première fois.
Cette fonctionnalité cumulée à la possibilité de ne rien remplir dans mysql_connect() et d'utiliser les utilisateur / mot de passe / hote par défaut définis dans le php.ini (ou via ini_set au lancement du script), ça devient tout à fait utilisable.
-- Eric
Marc
loufoque wrote:
Voici comment je fais.
au début de tous les scripts $sql = new SQL; puis global $sql quand besoin est.
moi aussi j'aurais une reponse de ce style assez orienté classes, mais ca peut aussi se faire en variables globales avec fonctions. C'est juste une affaire de gouts.
<?php
# page principale ou autre page : include_once('Application.php');
# initialisation ... function Application(){ $this->db = new Database(); } }
$appli = & new Application();
?>
<?php
class Database extends Core {
var $db; # database objet
# initialisation ... function Database(){ $this->db = mysql_connect(...); }
function query($sql){ return mysql_query($sql, $this->db); } }
$appli = & new Application();
?>
loufoque wrote:
Voici comment je fais.
au début de tous les scripts
$sql = new SQL;
puis global $sql quand besoin est.
moi aussi j'aurais une reponse de ce style assez orienté classes,
mais ca peut aussi se faire en variables globales avec fonctions.
C'est juste une affaire de gouts.
<?php
# page principale ou autre page :
include_once('Application.php');
au début de tous les scripts $sql = new SQL; puis global $sql quand besoin est.
moi aussi j'aurais une reponse de ce style assez orienté classes, mais ca peut aussi se faire en variables globales avec fonctions. C'est juste une affaire de gouts.
<?php
# page principale ou autre page : include_once('Application.php');