Crew algemeen |
|
Maar dat is voor overloading, dat is hier niet van toepassing.
Het hele verhaal over public/protected/private is al zo vaak uitgelegd (met Google als mijn getuige), daar zal ik niet nog meer over vertellen.
Wel dat private erg onhandig is, het staat bijvoorbeeld testen in de weg. Mijn advies is daarin om sowieso nooit private te gebruiken maar protected.
En wat jij wil kan wel, maar niet helemaal zoals je het zelf probeert. Je kunt een protected/private member niet benaderen van buiten de klasse, maar wel vanuit een methode binnen dezelfde (private) of descendant (protected) klasse.
Een voorbeeld van wat sowieso niet kan bij het direct initialiseren van een member is niet-constante expressie (private $thisdate = date ( 'D d M - Y' );), dat mag gewoon niet. Dat is niet te doen voor de parser, want dit wordt bij het compilen/executen al in de klassestructuur gezet.
Wat jij dus wilt is het volgende:
<?php
class Test {
protected $date;
public function __construct() {
$this->date = new DateTime;
}
public function setDate(DateTime $date) {
$this->date = $date;
return $this;
}
public function getDate() {
return $this->date;
}
}
$date = new Test;
echo $date->getDate()->format('d-m-Y H:i:s');
<?php class Test { protected $date; public function __construct() { $this->date = new DateTime; } public function setDate(DateTime $date) { $this->date = $date; return $this; } return $this->date; } } $date = new Test; echo $date->getDate()->format('d-m-Y H:i:s');
Ik heb in dit (extreem simpele) voorbeeld de PHP.net: DateTime klasse gebruikt, dat werkt ook nog eens een pak simpeler dan timestamps en geformatte data. In de documentatie kun je er meer over lezen.
Ik hoop dat je iets aan dit verhaal hebt :] |