Questo è ciò che la maggior parte del mio codice di libreria relativo al database assomiglia a:
lib.php
<?php
$dbh = new PDO(...);
function doSomeDatabaseThing() {
global $dbh;
return $dbh->doStuff();
}
function doSomeOtherThing() {
global $dbh;
return $dbh->doSomeOtherStuff();
}
index.php
<html>
<head>...</head>
<body>
<?php
require_once('lib.php');
echo doSomeDatabaseThing();
?>
</body>
</html>
Continuo a leggere che i globals in PHP sono generalmente cattivi. Naturalmente, questo non significa che dovrei mai utilizzare globals, ma mi sembra sbagliato usare ripetutamente questo pattern in quasi tutti i codici di database che scrivo.
Quindi, come dovrei farlo senza i globals? Potrei provare qualcosa di simile
lib.php
$dbh = new PDO(...);
function doSomeDatabaseThing($dbh) { ... }
index.php
doSomeDatebaseThing($dbh);
ma sembra brutto scrivere " ($dbh)
" ogni volta che chiamo una funzione di database.
C'è un modo migliore per risolvere questo?