Ik hoop dat uw tabel ook efectief globaal staat dan heh. Want bij de destructie van de eerste functie zou uw tabel wel eens mee opgeruimd kunnen worden anders.
Best is iets in volgende aard te gaan doen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| $myTable=0;
function first(){
global $myTable;
// en doe nu iets met die tabel
}
function two(){
global $myTable;
// nu heb je de juiste te pakken
} |
DOE DIT NIET...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| // $myTable=0; table bestaat nu niet !!!
function first(){
global $myTable;
// en doe nu iets met die tabel
// tabel is wel global maar de data zit IN de functie
}
function two(){
global $myTable;
// nu heb je niets te pakken want vorige functie is niet opgeroepen.
} |
ANDERE OPLOSSING:
werk met referenties of statics:
PHP:
1
2
3
4
5
6
7
8
9
| function first(){
static $myTable;
// en doe nu iets met die tabel
}
function two(){
global $myTable;
// nu heb je de juiste te pakken, vreemd maar het is zo :-/
} |
OF
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $myTable=first();
function first(){
static $myTable;
// en doe nu iets met die tabel
return &$myTable; //reference terugkeren
}
two(&myTable);
function two($myTable2){
// nu heb je de juiste te pakken
} |
PHP heeft een onzinnig gedrag op het werken met veriablen en zijn in weze niet conform de standaard :-/ zoals je ze bv in C/C++ terug vind.
Je moet steeds goed nadenken over twee zaken:
1) waar zit mijn data (in welke block)?
2) wat is de zichtbaarheid?
Het grootste gevaar is dat je naar data gaat verwijzen die niet meer bestaat OF verweizen naar data die onzichtbaar is doordat het buiten de scope zit.
Wat betreft die scope is PHP zeer rottig hoor.
vb:
PHP:
1
2
3
4
5
| function een(){
function localhelpfunction(){
//blablabla
}
} |
dan IS localhelpfunction GLOBAL !!! hoe zot het ook mag zijn

in C++ zou dat geen waar zijn :-) C++ is the best :-)
[
Voor 20% gewijzigd door
chem op 22-04-2003 14:28
. Reden: php tags ]