login  Naam:   Wachtwoord: 
Registreer je!
 Forum

OOP + Rekenen

Offline lasdesigner - 08/09/2005 08:57 (laatste wijziging 08/09/2005 08:57)
Avatar van lasdesignerPHP beginner Hallo, ik ben een zéér beginnende OOPer.

Ik ben bezig met -proberen- te rekenen.

Ik heb nu dit script:
  1. <?php
  2. class Test
  3. {
  4. var $getal1;
  5. var $getal2;
  6.  
  7. function getal($g1, $g2)
  8. {
  9. $this->getal1 = $g1;
  10. $this->getal2 = $g2;
  11. $this->vermenigvuldigen($this->getal1, $this->getal2);
  12. }
  13. function vermenigvuldigen()
  14. {
  15. print ($this->getal1 * $this->getal2);
  16. }
  17.  
  18.  
  19. }
  20.  
  21. $test = new Test;
  22. $test->getal1 = "4";
  23. $test->getal2 = "5";
  24. $test->getal();
  25. ?>


Maar dit doet niks... Volges mij moet ik de variabele in een andere functies doen maar weet 't niet zeker!

Weten mensen hier meer van, wat ik fout doe, & hoe ik het kan oplossen?

Alvast bedankt!

10 antwoorden

Gesponsorde links
Offline Scott - 08/09/2005 09:36
Avatar van Scott Gouden medaille

PHP ver gevorderde
Je raad je sterk aan variabelen en integers altijd buiten quotes te zetten, dus:

  1. $test->getal1 = 4;
  2. $test->getal2 = 5;


Verder moet je in methods (functies binnen een class), nooit output produceren. Return de waarde en echo hem buiten de class 
Offline Thomas - 08/09/2005 09:57 (laatste wijziging 08/09/2005 11:35)
Avatar van Thomas Moderator Je roept in de functie (methode) getal() de functie vermenigvuldigen() aan met 2 parameters ($this->getal1 en $this->getal2) terwijl de functie vermenigvuldigen() gedeclareerd staat zonder parameters ...
Offline nemesiskoen - 08/09/2005 11:19
Avatar van nemesiskoen Gouden medaille

PHP expert
Je zou kunnen doen
$test->vermenigvuldigen();
ipv $test->getal();

OF je zou kunnen doen $test->getal(4,5);

Integers BUITEN quotes houden.
Offline Fenrir - 08/09/2005 17:20
Avatar van Fenrir PHP expert Krijg je geen errors: Test::getal() accepts 2 parameters, 0 given... oid?

Zet anders error_reporting(E_ALL);
Offline Legolas - 08/09/2005 17:39
Avatar van Legolas Onbekend Volgens mij wil jij zo iets:

  1. <?php
  2. class oTest
  3. {
  4. var $aGetallen = array();
  5.  
  6. function setGetal($iNummer, $iWaarde)
  7. {
  8. $this->aGetallen[$iNummer] = $iWaarde;
  9. }
  10.  
  11. function vermenigvuldigen($aGetallen)
  12. {
  13. // maak hier een functie die alle elementen uit de aGetallen globale class array achter elkaar zet en dan vermenigvuldigt en de waarde niet PRINT, maar RETURNT!
  14. }
  15.  
  16.  
  17. }
  18.  
  19. $oTest = new oTest;
  20.  
  21. $oTest->setGetal(0,4);
  22. $oTest->setGetal(1,5);
  23.  
  24. echo $oTest->vermenigvuldigen(array(0,1));
  25. ?>


Zo zou ik het tenminste doen 
Offline nemesiskoen - 08/09/2005 18:03
Avatar van nemesiskoen Gouden medaille

PHP expert
@Legolas: dat is de lelijkste oop die ik ooit heb gezien...
Dat is gewoon niet oop, maar verkrachting van het feit dat je met classes kunt werken in php. (no offence though)
  1. <?php
  2. class oTest
  3. {
  4. var $aGetallen = array(); //als je al persé met een array wil werken
  5. var $product = 1;
  6.  
  7. function setGetal($waarde)
  8. {
  9. if(is_array($waarde)) {
  10. for($i=0;$i<count($waarde);$i++) {
  11. $this->aGetallen[] = $waarde[$i];
  12. }
  13. } else {
  14. $this->aGetallen[] = $waarde;
  15. }
  16. $this->vermenigvuldigen();
  17. }
  18. function vermenigvuldigen()
  19. {
  20. //de getallen zijn al ingevoerd... dus je moet het niet "nog" is doen
  21. for($i=0;$i<count($this->aGetallen);$i++) {
  22. $this->product*= $this->aGetallen[$i];
  23. }
  24. }
  25. function getProduct() {
  26. return $this->product;
  27. }
  28. }
  29. $oTest = new oTest;
  30.  
  31. $oTest->setGetal(4);
  32. $oTest->setGetal(array(5,6));
  33.  
  34. echo $oTest->getProduct();
  35. ?>


Dat is al een beetje "netter" van ik vind het nog altijd afschuwelijk
Offline lasdesigner - 08/09/2005 18:11
Avatar van lasdesigner PHP beginner ok, e n nu nog uitleg:|
Offline Rens - 08/09/2005 18:17 (laatste wijziging 08/09/2005 18:18)
Avatar van Rens Gouden medaille

Crew algemeen
Dezelfde code, maar nu met comment-regels er tussen door.

  1. <?php
  2. // class beginnen
  3. class oTest
  4. {
  5. // variabelen defineïeren
  6. var $aGetallen = array(); //als je al persé met een array wil werken
  7. var $product = 1;
  8.  
  9. // de functie setGetal aanmaken
  10. // deze functie heeft 1 argument (array of getal) nodig
  11. function setGetal($waarde)
  12. {
  13. // kijken of het argument een array is
  14. if(is_array($waarde)) {
  15. // dat is zo, dus doorlopen we de array
  16. for($i=0;$i<count($waarde);$i++) {
  17. // for loopje om de array te doorlopen en de getallen in een
  18. // nieuwe array te plaatsen
  19. $this->aGetallen[] = $waarde[$i];
  20. }
  21. } else {
  22. // het argument is geen array, dus een getal
  23. // het getal steken we in de vooraf gedefinïeerde array
  24. $this->aGetallen[] = $waarde;
  25. }
  26. // de rekenfunctie aanroepen
  27. $this->vermenigvuldigen();
  28. }
  29.  
  30. // de rekenfunctie maken
  31. function vermenigvuldigen()
  32. {
  33. //de getallen zijn al ingevoerd... dus je moet het niet "nog" is doen
  34. // we kunnen de getallen nu opvragen via $this->aGetallen[array nr]
  35. for($i=0;$i<count($this->aGetallen);$i++) {
  36. // for loopje om de getallen te vermenigvuldigen
  37. $this->product*= $this->aGetallen[$i];
  38. }
  39. }
  40. // functie maken voor het teruggeven van het resultaat
  41. function getProduct() {
  42. // het resultaat terug sturen
  43. return $this->product;
  44. }
  45. }
  46.  
  47. // de class starten
  48. $oTest = new oTest;
  49.  
  50. // de getallen invoeren
  51. $oTest->setGetal(4); // 1 getal
  52. $oTest->setGetal(array(5,6)); // een array met meerdere getallen
  53.  
  54. // het resultaat weergeven
  55. echo $oTest->getProduct();
  56. ?>
Offline nemesiskoen - 08/09/2005 18:51
Avatar van nemesiskoen Gouden medaille

PHP expert
Nu ik het zelf nog eens bekijk, lijkt me ook niet echt nuttig om direct al de vermenigvuldigingsmethode aan te roepen in de set methode... maar beter van buiten de class, vanaf het object dan.
Offline lasdesigner - 08/09/2005 18:56
Avatar van lasdesigner PHP beginner dat kan natuurliujk ook..:S MAar heeft iemand een idee hoe ik goed kan oefenen hiermee?! Want 't ziet er heel moeilijk uit.

Wíl 't wel heel graag leren!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.286s