[PHP] object variabele bereiken vbinnen ander object

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hoe bereik ik eigenlijk binnen een object / instance een variabele van een ander object / instance?

object 1
$rec = new receiver;

object 2
$tpl = new template;

binnen in de class 'template' wil ik werken met de variabele $data die in de klasse 'receiver' wordt aangemaakt

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:50
Dan zul de klasse template moeten extenden van de klasse receiver.

[ Voor 22% gewijzigd door Sybr_E-N op 27-06-2003 22:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
begrijp ik het goed als ik zeg dat je dus niet vanuit object 1 variabele van object 2 direct kan aanspreken?

je moet template overerven van receiver?

[ Voor 9% gewijzigd door Verwijderd op 27-06-2003 22:18 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 27 juni 2003 @ 22:16:
begrijp ik het goed als ik zeg dat je dus niet vanuit object 1 variabele van object 2 direct kan aanspreken?

je moet receiver overerven ?
als je een instansie van dat object hebt dan kan het gewoon hoor, niks overerven

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kan je een voorbeeld geven, want ik weet niet hoe t werkt

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Receiver {
   $data;
   function getData(){ return $this->data; }
}

class Template {
   $data;
   function setData($data){ $this->data = $data; }
}

$rec = new Receiver;
$tpl = new Template;

$tpl->setData($rec->getData());

zoiets globaal gezien, heb het niet getest btw, en ik zit @ the moment niet echt in het oo van php :P

[ Voor 14% gewijzigd door Erkens op 27-06-2003 22:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja ok dit werkt prima zo.. je copieerd data van de ene instance naar de andere
dit is dus de manier, waar ik vrede mee moet nemen :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 27 June 2003 @ 22:44:
ja ok dit werkt prima zo.. je copieerd data van de ene instance naar de andere
dit is dus de manier, waar ik vrede mee moet nemen :)
je zou ook iets met de reference kunnen doen

dus
PHP:
1
function getData(){ return & $this->data; }


ofzo

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok tanx,zo kom ik dr wel uit :)

Acties:
  • 0 Henk 'm!

  • Tranq
  • Registratie: Oktober 1999
  • Laatst online: 16-10-2024
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
class Receiver { 
   $data; 
   function getData(){ return $this->data; } 
} 

class Template extend Receiver { 
   $data; 
   function setData($data){ $this->data = $data; } 
} 

$tpl = new Template; 

$tpl->setData($tpl->getData());
?> 


Op deze manier kan het imho ook...

[ Voor 12% gewijzigd door Tranq op 28-06-2003 00:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Tranq schreef op 28 June 2003 @ 00:21:

...

Op deze manier kan het imho ook...
Dus jij gaat elke class A afleiden van een class B, van zodra je functies van class B vanuit class A wilt oproepen?

Dat heet ik pas het principe van overerving opfucken ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Tranq schreef op 28 June 2003 @ 00:21:
PHP:
1
2
3
<?
// niet voor herhaling vatbaar
?> 


Op deze manier kan het imho ook...
Het kan niet, in die zin, het werkt wel, maar beperkt.
Behalve dat, het is gewoon onzin.

Misschien moet de topicstarter eens hiernaar kijken: http://gathering.tweakers.net/forum/list_messages/715644

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Tranq schreef op 28 June 2003 @ 00:21:
PHP:
1
2
3
4
5
class Receiver { 
} 

class Template extend Receiver { 
}


Op deze manier kan het imho ook...
tuurlijk kan het zo ook, maar wat je nu krijgt dat Template een Receiver is wat dus niet het geval is ;)

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op 27 June 2003 @ 22:03:
hoe bereik ik eigenlijk binnen een object / instance een variabele van een ander object / instance?

object 1
$rec = new receiver;

object 2
$tpl = new template;

binnen in de class 'template' wil ik werken met de variabele $data die in de klasse 'receiver' wordt aangemaakt
Als je enkel en alleen een variabele wilt gebruiken van een instantie van Receiver in een instantie van Template, wat let je om gewoon die variabele aan te roepen (ReceiverInstance->myVar).. daar is geen constructor aanpassing voor nodig.

Als je direct een Receiver aan een Template wilt koppelen, geef dan een referentie naar de Receiver instantie mee in je constructor, ipv alleen 'data'. Dan kun je er later eventueel wat meer mee en zit je niet met data dubbel.
Pagina: 1