login  Naam:   Wachtwoord: 
Registreer je!
 Nota's op tutorial:

Tutorials > PHP > [OOP] Een begin maken met OOP
Pagina:

Reacties op de tutorial [OOP] Een begin maken met OOP


Offline  Stijn
Gepost op: 28 mei 2009 - 13:29
PHP expert

Mijn complimenten voor deze tutorial, hier zullen veel leden iets aan hebben. Misschien een kleine bedenking (discussie is altijd mogelijk hierover) maar is het gebruik van __set en __get niet iets te vroeg? Je zou deze kunnen introduceren in een tutorial die spreekt over alle overloadmethodes. Een tweede kleine opmerking, waarom gebruik je return bij een setter?

Offline  marten
Gepost op: 28 mei 2009 - 16:35
Beheerder

Ziet er goed uit maar je kan beter een echo vermijden in een class. Beter kan je werken met return.

Offline  Joost
Gepost op: 28 mei 2009 - 18:23
PHP expert

stijn1989 schreef:
Mijn complimenten voor deze tutorial, hier zullen veel leden iets aan hebben.
Bedankt! Ik vond dat er op Sima materiaal ontbrak die echt uitlegde wat OOP nou is en hoe je ermee begint in PHP, vandaar ook deze tutorial.

stijn1989 schreef:
Misschien een kleine bedenking (discussie is altijd mogelijk hierover) maar is het gebruik van __set en __get niet iets te vroeg? Je zou deze kunnen introduceren in een tutorial die spreekt over alle overloadmethodes
Omdat ik via toegangsbeheer al met setters en getters in aanraking kwam in deze tutorial, leek het me beter om ook __set en __get direct te bespreken. Vandaar  

stijn1989 schreef:
Een tweede kleine opmerking, waarom gebruik je return bij een setter?
Ik heb mezelf aangeleerd bij void methodes return; te gebruiken. Er is niet echt een specifieke reden voor, het heeft verder geen nut. Ik vind het persoonlijk wel netjes.


marten schreef:
Ziet er goed uit maar je kan beter een echo vermijden in een class. Beter kan je werken met return.
Alhoewel het voorbeeld erg minimalistisch is, heb je gelijk en zal ik het zo aanpassen. Het is beter direct van het begin af aan het goed aan te leren.
Edit: Aangepast  

Offline  Koen
Gepost op: 31 mei 2009 - 16:27
PHP expert

Very nice  

Offline  Bart
Gepost op: 06 juni 2009 - 09:33
PHP expert

Moet bij het volgende code blok $sKleur niet $sValue zijn?
  1. <?php
  2.  
  3. class Auto {
  4.  
  5. private $sKleur = "";
  6.  
  7. public function __set( $sAttribuut, $sValue ){
  8. switch( $sAttribuut ){
  9. case 'sKleur':
  10. $aValideKleuren = array('groen', 'rood', 'blauw', 'paars', 'geel', 'wit', 'zwart');
  11. if( !in_array( strtolower( $sKleur ), $aValideKleuren ) ){
  12. die( "Kleur niet bekend: " . $sKleur );
  13. }
  14. $this->sKleur = $sKleur;
  15. break;
  16. default:
  17. break;
  18. }
  19. return;
  20. }
  21.  
  22. public function __get( $sAttribuut ){
  23. if( isset( $this->$sAttribuut ) ){
  24. return $this->$sAttribuut;
  25. }
  26. return false;
  27. }
  28.  
  29. }

Offline  Joost
Gepost op: 06 juni 2009 - 11:02
PHP expert

Quicky schreef:
Moet bij het volgende code blok $sKleur niet $sValue zijn?
[..code..]
Goed gezien, heb het aangepast 

Offline  Esli
Gepost op: 17 oktober 2009 - 13:23
PHP interesse

Goede tutorial (5/5!), zitten wel hier en daar typ/spelfoutjes in. Eentje dat ik me herinner is "verfen" --> "Verven".

Offline  Thomas
Gepost op: 26 december 2013 - 00:52
Moderator

Let op bij het gebruik van getters en setters.

empty() en isset() werken niet hetzelfde als wanneer de variabelen waar naar verwezen wordt (publieke) attributen zouden zijn.

Bijvoorbeeld:
  1. <?php
  2. class Test
  3. {
  4. protected $settings;
  5.  
  6. public function __construct() {
  7. $this->settings = array();
  8. }
  9.  
  10. public function __set($key, $value) {
  11. $this->settings[$key] = $value;
  12. }
  13.  
  14. public function __get($key) {
  15. if (isset($this->settings[$key])) {
  16. return $this->settings[$key];
  17. } else {
  18. return false;
  19. }
  20. }
  21. }
  22.  
  23. $config = new Test();
  24. $config->setting = true;
  25.  
  26. if (empty($config->setting)) {
  27. echo 'empty fail<br />';
  28. } else {
  29. echo 'empty win<br />';
  30. }
  31.  
  32. if (isset($config->setting)) {
  33. echo 'isset win<br />';
  34. } else {
  35. echo 'isset fail<br />';
  36.  
  37. }
  38.  
  39. if ($config->setting) {
  40. echo 'direct check win<br />';
  41. } else {
  42. echo 'direct check fail<br />';
  43.  
  44. }
  45. ?>


Levert:
empty fail <-- zou je wellicht niet verwachten
isset fail <-- zou je wellicht niet verwachten
direct check win

Nu is dit redelijk voor hand liggend, maar het kan "even" duren voordat je hier achter bent .

Pagina:

Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.04s