<?php
$DBUSER = "username";
$DBPASS = "pass";
$DBNAME = "dbname";
$DBSERVER= "localhost";

class myDB {

var $myConnection;
var $myRecordset;
var $row;

function myDB() {
GLOBALS $DBUSER, $DBPASS, $DBSERVER, $DBNAME;

$this->myConnection = mysql_connect($DBSERVER, $DBUSER, $DBPASS) or die("DB ERROR" . mysql_error());
mysql_select_db($DBNAME, $this->myConnection) or die("Huh?" . mysql_error());
}

function getRecords(strSQL) {
$this->myRecordset = mysql_query(strSQL, this->myConnection);
}

function getRow() {
$this->row = mysql_fetch_row($this->recordset);
}

function dbclose() {
mysql_free_result($this->myRecordset);
mysql_close($this->myConnection);
}
}



$bla = new myDB();

?>
________________________________________

result = Huh?Access denied for user: '@localhost' to database 'dbname'

Het lijkt er dus op dat de username ineens niet meer wordt meegegeven????
Mitch en Kasper, wellicht misschien een overbodig commentaar, maar misschien wist je het niet:

Ik definieer een aantal variabelen buiten de class (zals Kasper idd opmerkt)...
Om deze variablen binnen de class (of binnen andere fucnties) te gebruiken, definieer je eerst de variable opnieuw door $GLOBAL $varName...

Nu heeft de $varName dus de waarde die ook buiten de functie / Class gedefinieerd is. Het heeft dus niets met de $GLOBALS['varname'] te maken....

(Variabelen zijn anders alleen bekend binnen de functie / class)...

Nog een puntje trouwens:
<?php
class whatever {
var $varname = 'iets';
}
?>

in php4 kun je variables niet op deze manier declareren, dit moet je in je constructor doen. Dus:

<?php
class whatever {
var $varname;

function whatever() {
$this->varname = 'iets';
}
}
?>


Just ter info.....
Neej.
<?php
# Voorbeeldje

$naam = 'Mitch';

class zegnaam
{
function zegnaam()
{
echo $GLOBALS['naam'];
}
}

$zegnaam = new zegnaam;
?>
Geef dus netjes Mitch :)
Niet zeuren dus ;)

Edit: En ik weet niet waarop je doeld met
(Variabelen zijn anders alleen bekend binnen de functie / class)...
maar ik werk enkel met classes ...
Ahh, op die manier....
Ik wist idd niet dat het ook op die manier kon, ik gebruikte daar dus altijd de andere manier voor: "$global $varName' $varName2"

Wat ik bedoelde met alleen bekend binnen class / functie is dit:

<?php
# Voorbeeldje

$naam = 'Mitch';

class zegnaam
{
function zegnaam()
{
echo $naam
}
}

$zegnaam = new zegnaam;
?>

Zal niets terug geven omdat $naam niet bekend is binnen de functie zegnaam...
Als je eerst dit doet:

<?php
# Voorbeeldje

$naam = 'Mitch';

class zegnaam
{
function zegnaam()
{
$GLOBALS $naam
echo $naam;
}
}

$zegnaam = new zegnaam;
?>

dan werkt het weer zoals jij verwachtte, en heeft $naam de waarde mitch...

Enneh: Ik zeur niet ;)
Je zeurt wel.
Iedereen die met functies leert omgaan kent lokale en globale variabelen :)
Mike schreef op 12.10.2004 17:22
Nog een puntje trouwens:
<?php
class whatever {
var $varname = 'iets';
}
?>

in php4 kun je variables niet op deze manier declareren, dit moet je in je constructor doen. Dus:

<?php
class whatever {
var $varname;

function whatever() {
$this->varname = 'iets';
}
}
?>


Just ter info.....


Heuh? Da's nieuw... Bij mij werkt dat wel gewoon en ik draai toch echt PHP 4 :|
Jah, hij weet ook niet waar hij het over heeft.
Als je het niet weet, leer het, vraag het, maar ga geen onzin uitkramen!

Je kunt gewo0n lokale variabelen aanmaken zonder problemen.
Wat is het voordeel dan van O.O.P.? Ik snap wel dat het moeilijk is ;)
Joh, nou dan zeur ik wel.... Laat maar zitten dan...
Wat betreft die variabelen die je niet kunt declareren in php4: dit betreft alleen niet-constanten... en ik gebruik zelden constanten op die manier... (Dat was misschien niet duidelijk) voor info, kijk gerust op php.net:

In PHP 4, only constant initializers for var variables are allowed. To initialize variables with non-constant values, you need an initialization function which is called automatically when an object is being constructed from the class. Such a function is called a constructor (see below).


http://us2.php.net/manual/nl/language.oop.php

Enneh, bedankt voor de fijne reacties... Zo wordt je echt gemotiveerd om actief mee te gaan doen aan dit forum....
Jammer.....
Nu mijn commentaar *wink*

Globale variabelen gebruiken is zeer dom in klasses en functies. De hele bedoeling achter klasses en functies is dat ze een op zichzelf staand stukje code worden dat je op een snelle en makkelijke manier in eender welke code kan inplakken.
Met het doorgeven van parameters kan je gewoon je functie aanroepen en de juiste waardes in de functiehoofding zetten.

Bij het gebruik van globalen ga je dus al eerst je mogelijke bestaande variabelen moeten globaal maken/renamen en ga je je vingers moeten kruisen dat je niet al ergens een variabele met die naam hebt of je hele script draait in het frut.

Moraal van het verhaal :
Hou zoveel mogelijk variabelen lokaal gedeclareerd om 'ambigious errors' of dubbelzinnigheid tegen te gaan.
@mary: Ik ben het geheel met je eens.
Ik wilde echter iets proberen, gewoon als PoC, en dat is gelukt...
Dat het onverstandig is, is duidelijk. Het ging alleen maar even om de theorie.

Maar deze hele discussie is ondertussen losgeslagen van de eigenlijke vraag..... :P

Reageren