Hej venner :-)
Jeg kunne godt tænke mig at høre jeres mening om følgende:
Jeg har haft funderet en del over hvordan man bedst deler et PDO objekt mellem flere forskellige objekter som skal interagere med databasen. Jeg har ikke kunnet finde nogen svar konkrete svar nogen steder - og jeg har set folk gøre det på mange måder. Det er nok ikke specifikt for pdo - det gør sig nok gældende for, for eksempel, mysqli.
Man kunne give db-objektet gennem constructors. Eller man kunne have det i en variabel, som man gav objektet adgang til via global keywordet. Man kunne også overveje, om det overhovedet er et problem at have flere forskellige instances af PDO objektet. Jeg har ikke testet det, da min logik siger at én forbindelse der deles mellem alle er bedre end en forbindelse per objekt.
Der er mange muligheder. Jeg er dog kommet frem til en metode som jeg synes er den mest optimale - men den er lidt rough. Og selvom jeg synes den er funktionel nok - så er jeg usikker på om det er "the way to go".
Det ser således ud:
- $_dbh = 0;
-
- function createConnection() {
- global $_dbh;
- $_dbhost = 'host';
- $_dbuser = 'user';
- $_dbpass = 'pass';
- $_dbname = 'database';
- $_dbh = new PDO("mysql:host=$_dbhost;dbname=$_dbname",
- $_dbuser,
- $_dbpass,
- array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
- $_dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- }
-
- function getConnection() {
- global $_dbh;
- if (!is_object($_dbh)) { createConnection(); }
- return $_dbh;
- }
Når jeg så skal bruge min connection gør jeg bare noget ala:
- $db = getConnection();
- $stmt = $db->prepare(....);
Nemt og fikst synes jeg selv.
Kan i finde nogen svagheder ved den metode? Eller er der nogen helt åbenlyse ting som overser - som gør det fuldstændigt overflødigt?
Indlæg senest redigeret d. 22.04.2012 19:03 af Bruger #17015