Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przypisanie bieżącej daty do składowej w klasie
Forum PHP.pl > Forum > Przedszkole
Vhaeraun
Witam,
podczas pisania skryptu natknąłem się na niezrozumiały dla mnie błąd.
Otóż, jeśli stworzę sobie klasę w taki sposób:
  1. class year
  2. {
  3. private $year_now=date("Y");
  4.  
  5. //tutaj jakieś funkcje
  6. }

to dostaję błąd, jednak jeśli do $year_now przypiszę wartość w konstruktorze wszystko jest ok:
  1. class year
  2. {
  3. private $year_now;
  4.  
  5. function __construct(){
  6. $this->year_now = date("Y");
  7. }
  8. }


Ktoś potrafi wyjaśnić, dlaczego tak się dzieje i dlaczego nie mogę zainicjalizować zmiennej wartością zwracaną przez funkcję inaczej niż w konstruktorze ?
Fifi209
Nie widzę problemu robienia tego w konstruktorze, czemu tak jest? Taka budowa i tyle. np. w c# masz identycznie
croc
Bo tak działa Programowanie Obiektowe biggrin.gif Przy inicjowaniu pól (zmiennych) klasy możesz posługiwać się wyłącznie wartościami stałymi. Ale coś mi śmierdzi ta Twoja klasa jeśli mam być szczery. Do czego ma służyć?
Vhaeraun
Cytat(croc @ 15.10.2011, 19:51:01 ) *
Przy inicjowaniu pól (zmiennych) klasy możesz posługiwać się wyłącznie wartościami stałymi.


No właśnie tego nie wiedziałem smile.gif
A klasa będzie wykorzystywana w kalendarzu i w sumie to dopiero zaczątek jej jest.
Crozin
@croc: Nie, "programowanie obiektowe może tak działać. To po prostu zwykłe ograniczenie języka, które może kiedyś naprawią.
croc
To pole year_now trochę kłóci się wg mnie z logiką. Jeśli już, to widziałbym np. klasę Date, której konstruktor (jeśli takowy istnieje) domyślnie tworzy instancję daty bieżącej. I wtedy:

  1. $now = new Date;
  2. echo $now->getYear();
Fifi209
Ja bym zainteresował się ogólnie DateTime
Vhaeraun
W sumie rzeczywiście, trochę lipną nazwę zmiennej dobrałem w porównaniu z tym jak to ma w założeniu działać smile.gif
Tak czy siak, dziękuję za odpowiedzi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.