login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hoe schrijf ik een goede class?

Offline Martijn2008 - 14/02/2009 14:27 (laatste wijziging 14/02/2009 14:29)
Avatar van Martijn2008PHP beginner Hallo Sitemasters,

Hoe schrijf ik een goede class? Dat is iets wat ik me nu al een hele tijd af vraag. Daarom heb ik getracht een eenvoudige class te schrijven. Het gaat mij er puur alleen om dat ik de werking van een class begrijp. De code die ik nu geschreven heb werkt alleen niet. Het resultaat is een witte blanco pagina in de webbrowser. De code ziet er als volgt uit:

  1. <?
  2.  
  3. class example
  4. {
  5. function simpletime($intValue)
  6. {
  7. $this = array();
  8. $this = $intValue;
  9. $this = date("j-n-Y", $this[0]);
  10. $this = date("H:i", $this[0]);
  11.  
  12. return $this;
  13. }
  14. }
  15.  
  16. $do = new example;
  17. $do->simpletime(time());
  18. echo $do[1] . $do[2];
  19.  
  20. ?>


Ik ben erg benieuwd naar jullie reacties. Hopelijk zit de oplossing daarbij.

Bedankt alvast !

Martijn

5 antwoorden

Gesponsorde links
Offline Richard - 14/02/2009 14:30
Avatar van Richard Crew algemeen Ik zou zeggen, lezen! :-)

http://wiki.php...rogramming
http://wiki.phpfreakz.nl/OOP_Toepassen
Offline ranco - 14/02/2009 15:14
Avatar van ranco PHP gevorderde Je hebt arraypositie 0 alleen maar gevuld. Je echo't daarna positie 1 en 2, daarom krijg je niets te zien.
Echo $do[0] maar eens. (ook dan krijg je alleen de tijd te zien, en geen datum, omdat je deze overschrijft, maar dat terzijde)
Offline Koen - 14/02/2009 15:15
Avatar van Koen PHP expert
  1. <?
  2.  
  3. class example
  4. {
  5. function simpletime($intValue)
  6. {
  7. $this = array();
  8. $this[] = $intValue;
  9. $this[] = date("j-n-Y", $this[0]);
  10. $this[] = date("H:i", $this[0]);
  11.  
  12. return $this;
  13. }
  14. }
  15.  
  16. $do = new example;
  17. $do->simpletime(time());
  18. echo $do[1] . $do[2];
  19.  
  20. ?>


Moet het zijn 
Offline Ibrahim - 14/02/2009 16:39 (laatste wijziging 14/02/2009 16:53)
Avatar van Ibrahim PHP expert Klopt net niet, sliphead

Ik heb even je class herschreven:

  1. <?php
  2.  
  3. class Example {
  4.  
  5. private $timeArray;
  6.  
  7. public function __construct($time) {
  8.  
  9. $this->timeArray = array();
  10.  
  11. $this->timeArray[] = $time;
  12. $this->timeArray[] = date("j-n-Y", $time);
  13. $this->timeArray[] = date("H:i", $time);
  14. }
  15.  
  16. public function printTime($position) {
  17. return isset($this->timeArray[$position]) ? $this->timeArray[$position] : $this->timeArray[0];
  18. }
  19.  
  20. }
  21.  
  22. $oExample = New Example(time());
  23. $oExample->printTime(1) . ' - ' . $oExample->printTime(2);


En nu de uitleg:

Een classnaam is meestal met een hoofdletter geschreven.

__construct() is het eerste wat word aangeroepen als je New ClassNaam(params); gebruikt. Deze zal een speciale variabele genaamd $this aanmaken. $this is de referentie naar de huidige instance.

Als je een instance variabele in een class wilt gebruiken, zul je (voor netheid) die net na de class <classnaam> moeten definiëren.

Het is (voor mij in ieder geval) beter om je variabelen in je class private of protected te definiëren (ligt aan de hiërarchie van je class, maar dat gaat te ver voor deze uitleg), zodat "buitenstaanders" je variabele niet zomaar kunnen veranderen en de werking van je class verpest. Om je variabelen te weergeven, zou je een __get() functie kunnen maken of een eigen functie zoals ik heb gedaan: printTime($postition);

Een "goede" class bestaat niet. Er zijn verschillende mogelijkheden om een class te maken. Wat je wel goed kunt doen, is een aantal richtlijnen voor jezelf maken (of die van Zend opvolgen) en je daaraan houden. Daar kom je al ver mee 

Veel succes 
Offline Martijn2008 - 14/02/2009 16:54
Avatar van Martijn2008 PHP beginner @Sliphead Ik heb jouw code geprobeerd, maar deze werkt ook niet  !
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.366s