login  Naam:   Wachtwoord: 
Registreer je!
 Forum

OOP, verbeteringen

Offline lasdesigner - 24/03/2006 18:09
Avatar van lasdesignerPHP beginner Ik heb een simpel OOP scriptje gemaakt:

  1. <?php
  2.  
  3. class Werkgever
  4. {
  5. var $naam;
  6. var $geld;
  7. var $uren;
  8. var $prijspu;
  9.  
  10. function SetGegevens($naam, $geld, $uren)
  11. {
  12. // set de gegevens
  13.  
  14. $this->naam = $naam;
  15. $this->geld = $geld;
  16. $this->uren = $uren;
  17.  
  18. }
  19.  
  20. function PrijsPerUur($prijs)
  21. {
  22. $this->prijspu = $prijs;
  23. }
  24.  
  25. function Werken($uur)
  26. {
  27. $this->uren = $this->uren+$uur;
  28.  
  29. $this->geld = $this->uren*$this->prijspu;
  30. }
  31.  
  32. function LaatZien()
  33. {
  34. echo "Werkgever: ". $this->naam . "<BR />";
  35. echo "Prijs Per Uur: ". $this->prijspu . "<BR />";
  36. echo "Geld verdiend: &euro;". $this->geld . "<BR />";
  37. echo "Aantal Uren Gewerkt: ".$this->uren . "<BR />";
  38. }
  39. }
  40.  
  41. $luuk = new Werkgever;
  42. $luuk->SetGegevens("Luuk", 0, 0);
  43. $luuk->PrijsPerUur(10);
  44. $luuk->Werken(5);
  45. $luuk->LaatZien();
  46. ?>


En wilde vragen of jullie verbeteringen kunnen vinden in dit script? k wil namelijk OOP lerne, maar er zijn weinig (goede/uitgebreide) tutorials. Vandaar dat ik het zo doe.. Ik weet niet of dit mag.. Maar ik denk het wel ;)

5 antwoorden

Gesponsorde links
Offline Stijn - 24/03/2006 18:18
Avatar van Stijn PHP expert Ik vermoed dat je PHP 4.x hebt en geen PHP 5.x. Als je PHP 5.x hebt raad ik aan om met private/public/protected en al de PHP5 oop aspecten (zie het laatste artikel op http://www.phpfreakz.nl - da's de NL versie die op PHP.net staat met uitgebreide en verstaanbare voorbeelden)

Nu over je script:
1. Ik zou een contstructor aanbrengen. Is makkelijker voor het aanmaken van je nieuw object.

2. Ik zou je waarden van je parameters controleren.

3. Je LaatZien() functie zou ik geen gebruik maken van echo maar met een return parameter:

--watIkZouDoenMetJeClass.php--
  1. <?php
  2.  
  3. class Werkgever
  4. {
  5. var $naam;
  6. var $geld;
  7. var $uren;
  8. var $prijspu;
  9.  
  10. function Werkgever($naam, $geld, $uren) //Werkgever() is dezelfde naam als je class en dus een constructor
  11. {
  12. // set de gegevens
  13.  
  14. $this->naam = $naam;
  15. $this->geld = $geld;
  16. $this->uren = $uren;
  17.  
  18. }
  19.  
  20. function PrijsPerUur($prijs)
  21. {
  22. $this->prijspu = $prijs;
  23. }
  24.  
  25. function Werken($uur)
  26. {
  27. $this->uren = $this->uren + $uur;
  28.  
  29. $this->geld = $this->uren * $this->prijspu;
  30. }
  31.  
  32. function LaatZien()
  33. {
  34. $output = NULL;
  35. $output .= "Werkgever: ". $this->naam . "<BR />";
  36. $output .= "Prijs Per Uur: ". $this->prijspu . "<BR />";
  37. $output .= "Geld verdiend: &euro;". $this->geld . "<BR />";
  38. $output .= "Aantal Uren Gewerkt: ".$this->uren . "<BR />";
  39. return $output;
  40. }
  41. }
  42.  
  43. $luuk = new Werkgever("Luuk", 0, 0);
  44. $luuk->PrijsPerUur(10);
  45. $luuk->Werken(5);
  46. echo $luuk->LaatZien();
  47. ?>


groeten, stijn
Offline lasdesigner - 24/03/2006 18:20
Avatar van lasdesigner PHP beginner Wat bedoel je precies hiermee?

1. Ik zou een contstructor aanbrengen. Is makkelijker voor het aanmaken van je nieuw object.

Wat is een constructor?
Offline Stijn - 24/03/2006 18:30
Avatar van Stijn PHP expert kijk eens onderaan. je moet geen 2 lijnen "verbruiken". Hij roept dan automatisch die functie aan.
Offline lasdesigner - 24/03/2006 19:18
Avatar van lasdesigner PHP beginner Ik heb nog een vraag, ik ben nu bezig met een class 'Lokaal' En nu wil ik hierin leerlingen zetten.. Meerdere dus. Maar hoe kan ik dit doen?

Dus dat ik heb:
(dit heb ik nu, maar kan dnek ik niet?)

  1. <?php
  2.  
  3. class Klaslokaal
  4. {
  5. var $leerling;
  6. var $leeftijd;
  7. var $favovak;
  8. var $aantal;
  9.  
  10. function SetLeerling($leerling, $leeftijd, $favovak)
  11. {
  12. $this->leerling = $leerling;
  13. $this->leeftijd = $leeftijd;
  14. $this->favovak = $favovak;
  15.  
  16. $this->aantal++;
  17.  
  18. }
  19.  
  20. function Aantal()
  21. {
  22. return $this->aantal;
  23. }
  24. }
  25. ?>


KLein begin..

Maar hoe doe ik dat dus?
Offline Stijn - 24/03/2006 19:44 (laatste wijziging 24/03/2006 19:46)
Avatar van Stijn PHP expert eerst en vooral wil je dezelfde type gegevens intikken (waarden zijn anders natuurlijk). dan gebruik je het best een array. Nu wil je meerdere leerlingen intikken. Dit kan op verschillende manieren. Dit zou ik doen:
  1. <?php
  2.  
  3. class Klaslokaal
  4. {
  5. var $leerling = array( );
  6. var $leeftijd = array( );
  7. var $favovak = array( );
  8. var $aantal = 0; //initialeseren
  9.  
  10. function SetLeerling($leerling, $leeftijd, $favovak)
  11. {
  12. $this->leerling[ ] = $leerling;
  13. $this->leeftijd[ ] = $leeftijd;
  14. $this->favovak[ ] = $favovak;
  15.  
  16. $this->aantal++; // hoe kan je niets met 1 optellen :p
  17.  
  18. }
  19.  
  20. function Aantal()
  21. {
  22. return $this->aantal;
  23. }
  24. }
  25.  
  26. //beetje array's
  27. $leerling = array('stijn' , 'jan' , 'vinTage');
  28. $leeftijd = array(16 , 17 , 40);
  29. $favovak = array('informatica' , 'wiskunde' , 'chemie');
  30.  
  31. $obj = new Klaslokaal;
  32.  
  33. //dan de loop
  34. foreach( $leerling as $key) {
  35.  
  36. $obj->SetLeerling( $leerling[ $key ] , $leeftijd[ $key ] , $favovak [$key ] );
  37.  
  38. }//end loop
  39.  
  40. echo $obj->Aantal( );
  41. ?>


groeten stijn

er is ook nog een andere manier, maar dit is ook mogelijk
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.241s