"-Martin-" <admin@natten-i.dk> skrev i en meddelelse
news:nsafbuknmqldqhlpoiv5oa8ijlruu22ntc@4ax.com...
> On Sat, 13 Apr 2002 02:16:47 +0200, "Tonni Aagesen"
> <use.my@signature.com> wrote:
>
> >"-Martin-" <admin@natten-i.dk> skrev i en meddelelse
> >news:gbpebu43s9k35pq8rud0uas8vicgi9qrou@4ax.com...
[snip]
> >Ja, hvis du ikke decideret returnere variablen. Det er generelt ikke god
> >skik at bruge "global" i funktioner, hvis man kan undgå det. Overvej
f.eks.
> >følgende
>
> Hvorfor er det ikke en god skik ?
> Er der problemer med det?
> Eller det bare "din" mening om det ?
>
Nu var det jo godt nok ikke mig der sagde det, men jeg er enig, og ville
gerne lige supplere med en kommentar om hvorfor man ikke skal bruge global
variable.
Dit program blivere tættere koblet af det. Ideen i en funktion er simpel
nok, giv den noget input, og forvent noget output.
Ideen er ikke: Gi'den noget input og forvent noget output - hvis i øvrigt at
du har husket at gøre alt muligt andet, før du kalder funktionen. ;)
Det er ønskværdigt at dine funktioner kan copy-pastes (eller måske bare
inkluderes) til brug i andre programmer, og det kan de ikke hvis du anvender
global variable.
Jeg tror du forsøget at løse 2 problemer:
1) Du ønsker at være istand til nemt at skifte database.
2) Du ønsker kun at skulle ændre "forbindelsels-oplysningerne" et sted.
Det kan du også sagten opnå.
I den fil hvor du har dine database-funktioner (eller i en anden fil) laver
du nogle global variable til forbindelses-oplysningerne:
<?
$GLOB_DB_HOST = 'localhost';
$GLOB_DB_USER = 'someuser';
$GLOB_DB_PASSWD = 'someuserspasswd';
$GLOB_DB_DATABASE = 'somedatabase';
?>
Og disse globale variable, giver du så med som parametre til openconn().
<?
require_once('db.inc.php');
$dbConn = openconn($GLOB_DB_HOST, $GLOB_DB_USER, $GLOB_DB_PASSWD);
selectdb( $GLOB_DB_DATABASE );
....
...
closeconn($dbConn);
?>
Hvor openconn(), selectdb(), og closeconn() - selvfølgelig er funktioner i
din database abstraktion.
Nu kan du med lethed genbruge funktionerne (de stiller ingen krav om globale
variable) - og du har kun et sted at ændre
forbindelses-oplysningerne.
[snip]
MVH Per Thomsen,
http://www.pert.dk/