[PHP]Cross class referenties

Pagina: 1
Acties:

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 10:59

Kees

Serveradmin / BOFH / DoC
Topicstarter
Kan iemand mij uitleggen waarom:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
  class a {
    function a() {}
    function a_functie() {
      echo "a functie\n";
    }
  }
$aclass = new a();
  class b {
    function b() {
    }
    function b_functie() {
      echo "b functie\n";
      $GLOBALS[aclass]->a_functie();
    }
  }
  
$bclass = new b();
$bclass->b_functie();
?>

gewoon:

b functie
a functie

geeft maar:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
  class a {
    function a() {}
    function a_functie() {
      echo "a functie\n";
    }
  }
$aclass = new a();
  class b {
    function b() {
    }
    function b_functie() {
      echo "b functie\n";
      $aclass->a_functie();
    }
  }
  
$bclass = new b();
$bclass->b_functie();
?>

resulteerd in de:

b functie


Fatal error: Call to a member function on a non-object in /www/htdocs/forum/test.php on line 17


Ik zat er net een beetje mee te kloten, het is wel op te lossen met de globals, maar ik vind het niet mooi :P

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Ja, dat is toch logisch, want je doet
$a=new a();
en dat is dus een var die niet te gebruiken is in een functie. Logisch indeed.


edit: dump die
$a=new a();
es in die bclass????

  • Grum
  • Registratie: Juni 2001
  • Niet online
a::a_functie(); zou moeten werken

maar als dat niet werkt ... tja .. dan heb je weinig keuze he ...

$a is niet bekend in de b_functie .. dus moet je em globallen OF meegeven :P

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 10:59

Kees

Serveradmin / BOFH / DoC
Topicstarter
idd, a::a_functie(); werkt ook.
nu nog ff testen of die het wel goed doet met een paar dingen. waarschijnlijk niet, magoed, globals zijn dan de makkelijkste manier :P

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan