login  Naam:   Wachtwoord: 
Registreer je!
 Forum

OOP Vraagje

Offline Jens - 02/03/2006 12:04
Avatar van JensNieuw lid Ik vraag me af of het nodig is, of gewoon aangeraden om in classes steeds $this-> te gebruiken voor je variabelen. Het werkt bij mij ook perfect zonder, en ik vraag me nu af of het wel goed is om het zonder te doen..

12 antwoorden

Gesponsorde links
Offline Stijn - 02/03/2006 12:07
Avatar van Stijn PHP expert $this->VarName verwijst naar een variable in de class of in een extended class. Maar je kan ook andere variablen aanroepen, globals dan maar ook in functies (deuh ).
Offline Jens - 02/03/2006 12:32
Avatar van Jens Nieuw lid Het gaat hem om variabelen die ik voor de eerste keer gebruik in een class, ze komen dus niet van erbuiten ;)
Offline Stijn - 02/03/2006 13:00
Avatar van Stijn PHP expert variablen die je defineert in je class: public $varname roep je het best aan met $this->varname;
Offline Wijnand - 02/03/2006 13:16
Avatar van Wijnand Moderator
Citaat:
variablen die je defineert in je class: public $varname roep je het best aan met $this->varname;


Ja en zijn vraag was dus waarom....

$this-> gebruik je (tenminste ik) zodat je een variabele kan gebruiken in de hele class.

Stel je doet zo:

  1. <?php
  2. class test
  3. {
  4. var $variabele;
  5.  
  6. function test()
  7. {
  8. $this->variabele = 'test';
  9. }
  10.  
  11. function showVar()
  12. {
  13. return $this->variabele;
  14. }
  15. }
  16.  
  17. $obj = new test();
  18. $var = $obj->showVar();
  19. echo $var;
  20. ?>


Hier zie je dat je in de ene functie de var een waarde geeft, en in de andere functie kun je die variabele blijven aanroepen.

ps. dit is een php4 voorbeeld.
Offline Stijn - 02/03/2006 13:21
Avatar van Stijn PHP expert Yeah ik weet dat ook wel maar met een gewone variable kan je dat ook dus. In classes is het $this->var omdat het een variable is in die class. (naar mijn mening beetje onzinnige topic , maar kan verstaan dat je met zo'n vragen zit)
Offline Wijnand - 02/03/2006 14:01
Avatar van Wijnand Moderator
Citaat:
Yeah ik weet dat ook wel maar met een gewone variable kan je dat ook dus


1. Als jij dat toch weet, dan had je dat duidelijk kunnen zeggen.
2. Met een gewone variabele kan je dat niet.
Offline Gerard - 02/03/2006 16:01
Avatar van Gerard Ouwe rakker Een gewone variabele vervalt zodra de functie is uitgewerkt. Wijnand heeft dus gelijk.
Offline Jens - 02/03/2006 19:17
Avatar van Jens Nieuw lid Bedankt voor de antwoorden. In feite kan ik dus gewoon $var gebruiken in plaats van $this->var als ik de variabele niet in de hele class nodig heb maar alleen in één functie?
Offline BigBug - 02/03/2006 19:57
Avatar van BigBug PHP expert Volgensmij moet dat kunnen.
Offline Wijnand - 02/03/2006 20:46
Avatar van Wijnand Moderator Het kan, maar op zich is $this->var wel netjes. Vind ik dan tenminste, maar het kan zonder.

Ik weet trouwens niet hoe het zit met beveiliging, maar het zal geen verschil maken denk ik.
Offline Jens - 03/03/2006 10:52
Avatar van Jens Nieuw lid Oké bedankt 
Offline nemesiskoen - 03/03/2006 13:49
Avatar van nemesiskoen Gouden medaille

PHP expert
Waarom moet je $this->var gebruiken (verklaring 2):

Omdat $this een reference is van je object, anders gaat het misschien over een andere var.
$this heeft dezelfde variabelen als het huidige object (logisch) en de waarden vd lidvariabelen van het object kunnen veranderd worden op 2 manieren:

  1. class Een_class {
  2. var $var;
  3. function changeVar() {
  4. $this->var = 'test';
  5. }
  6. }
  7.  
  8. $mijn_object = new Een_class;
  9.  
  10. $mijn_object->changeVar();
  11.  
  12. en
  13.  
  14. $mijn_object->var = 'test';


Hebben hetzelfde effect. Het tweede is natuurlijk dynamischer maar dat kan aangepast worden door met argumenten te werken. Het bovenstaande lijkt logisch maar dit is dus de verklaring waarom (references).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s