[PHP] $$ variabele declaratie at runtime

Pagina: 1
Acties:

  • vinnux
  • Registratie: Maart 2001
  • Niet online
code:
1
2
3
4
5
6
7
8
9
10
class A{
  var $n = 'name';
  function b($z){
    $$this->n = $z;
    echo($name);
  }

}
$oa = new A();
$oa -> b('Sinterklaas');

Ik verwacht van deze code dat het word 'Sinterklaas' op het beeldscherm verschijnt. Echter gebeurt dit niet.
Ik wil dus at runtime een variabele declareren met de naam de waarde van de variable $name en de inhoud van $z.
Dit moet simpel zijn, maar zoeken ernaar leverde geen resulaten op.

Iemand ?

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
PHP:
1
<?class A{  // vergeet de var niet!  var $n = 'name';  function b($z){    $$this->n = $z;    echo($name);  }}$oa = new A();$oa -> b('Sinterklaas');?>

  • vinnux
  • Registratie: Maart 2001
  • Niet online
code:
1
2
3
4
5
6
7
8
9
10
11
class A{
  var $n = 'name';
  function b($z){
    $tmp = $this->n;
    $$tmp = $z;
    echo($name);
  }

}
$oa = new A();
$oa -> b('Sinterklaas');

Vraag me niet waarom, maar wanneer je gebruik maakt van een tmp varaiabele doet ie het wel ! Weet iemand waarom ?

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op zondag 21 juli 2002 15:25 schreef elviver het volgende:
.....
Ja foutje, was maar een voorbeeld. Maar het probleem blijft bestaan.

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
PHP:
1
<?class A{  var $n = 'name';  function b($z){    ${$this->n} = $z;    echo($name);  }}$oa = new A();$oa -> b('Sinterklaas');?>

Verwijderd

Op zondag 21 juli 2002 15:25 schreef vgouw het volgende:
Vraag me niet waarom, maar wanneer je gebruik maakt van een tmp varaiabele doet ie het wel ! Weet iemand waarom ?
best logisch, $$this->n is nogal dubbelzinnig, de parser weet niet of jij ($($this))->n bedoelt of ${$this->n)

elsevier gaf dus al oplossing

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op zondag 21 juli 2002 16:35 schreef fladder het volgende:

[..]

best logisch, $$this->n is nogal dubbelzinnig, de parser weet niet of jij ($($this))->n bedoelt of ${$this->n)

elsevier gaf dus al oplossing
* DRvDijk heet NIET elsevier!! :(

Kan $this wel assigned worden? Da's toch een reserved variable ofzo?

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 01-09 17:39
Op zondag 21 juli 2002 15:16 schreef vgouw het volgende:
code:
1
2
3
4
5
6
7
8
9
10
class A{
  var $n = 'name';
  function b($z){
    $$this->n = $z;
    echo($name);
  }

}
$oa = new A();
$oa -> b('Sinterklaas');

Ik verwacht van deze code dat het word 'Sinterklaas' op het beeldscherm verschijnt. Echter gebeurt dit niet.
Ik wil dus at runtime een variabele declareren met de naam de waarde van de variable $name en de inhoud van $z.
Dit moet simpel zijn, maar zoeken ernaar leverde geen resulaten op.

Iemand ?
Eigenlijk best simpel:
PHP:
1
<?class A{  var $n = 'name';  function b($z){    $this->$n = $z;    echo($name);  }}$oa = new A();$oa -> b('Sinterklaas');?>

Wat je ook kunt doen is het volgende:
PHP:
1
<?class A{  var $n = 'name';  function b($z){    $this->this->n= $z;    echo($name);  }}$oa = new A();$oa -> b('Sinterklaas');?>

Die laatste is mooier, maar minder begrijpelijk :)

Verbouwing


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 01-09 17:39
Die 2e klopt nog niet. Het moet zijn
PHP:
1
<?class A{  var $n = 'name';  function b($z){    $this->$this->n = $z;    echo($name);  }}$oa = new A();$oa -> b('Sinterklaas');?>

Ik had geen zin om die andere WEER te editten, met de tegenwoordige _BRAKKE_ topix ;(

Verbouwing

Pagina: 1