Mam metody klasy, która zajmuje się terminach:typów parametrów i opcjonalne atrybuty w PHP
public function setAvailability(DateTime $start, DateTime $end){
}
Ponieważ dostępność element może mieć niższy limit, górny limit, oba lub żadne, chciałbym aby setAvailability () również akceptuj wartości NULL. Jednak stała NULL
narusza typów parametrów:
$foo->setAvailability(NULL, $end);
wyzwala:
Catchable fatal error: Argument 1 passed to Foo::setAvailability() must be an instance of DateTime, null given
I, o ile wiem, nie mogę mieć instancję DateTime bez wartości. (Czy mogę)
z jakiegoś powodu nie mogę zrozumieć, to wydaje się działać:
public function setAvailability(DateTime $start=NULL, DateTime $end=NULL){
}
...
$foo->setAvailability(NULL, $end);
Ale wygląda na to hack który działa przez czysty przypadek.
Jak radzić sobie z nie ustawionymi datami w klasach PHP?
Dodany link do odpowiedniej strony podręcznika –
+1 wygląda na zachowanie, na którym można polegać. Byłoby fajnie dowiedzieć się, czy istnieje jakiś "zerowy" obiekt DateTime. –
@zerocrates: Dzięki. Nie tylko jest to udokumentowane zachowanie - wyjaśniono to również w rozdziale, którego można się spodziewać. Czuję się jak nowicjusz <:-) –