PHP expert |
|
Klopt net niet, sliphead
Ik heb even je class herschreven:
<?php
class Example {
private $timeArray;
public function __construct($time) {
$this->timeArray = array();
$this->timeArray[] = $time;
$this->timeArray[] = date("j-n-Y", $time);
$this->timeArray[] = date("H:i", $time);
}
public function printTime($position) {
return isset($this->timeArray[$position]) ? $this->timeArray[$position] : $this->timeArray[0];
}
}
$oExample = New Example(time());
$oExample->printTime(1) . ' - ' . $oExample->printTime(2);
<?php class Example { private $timeArray; public function __construct($time) { $this->timeArray = array(); $this->timeArray[] = $time; $this->timeArray[] = date("j-n-Y", $time); $this->timeArray[] = date("H:i", $time); } public function printTime($position) { return isset($this->timeArray[$position]) ? $this->timeArray[$position] : $this->timeArray[0]; } } $oExample = New Example (time()); $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 |