Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przypisanie bieżącej daty do składowej w klasie
Vhaeraun
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 6
Dołączył: 10.01.2011

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie widzę problemu robienia tego w konstruktorze, czemu tak jest? Taka budowa i tyle. np. w c# masz identycznie
Go to the top of the page
+Quote Post
croc
post
Post #3





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Bo tak działa Programowanie Obiektowe (IMG:style_emoticons/default/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ć?
Go to the top of the page
+Quote Post
Vhaeraun
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 6
Dołączył: 10.01.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)
A klasa będzie wykorzystywana w kalendarzu i w sumie to dopiero zaczątek jej jest.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@croc: Nie, "programowanie obiektowe może tak działać. To po prostu zwykłe ograniczenie języka, które może kiedyś naprawią.
Go to the top of the page
+Quote Post
croc
post
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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();
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Ja bym zainteresował się ogólnie DateTime
Go to the top of the page
+Quote Post
Vhaeraun
post
Post #8





Grupa: Zarejestrowani
Postów: 57
Pomógł: 6
Dołączył: 10.01.2011

Ostrzeżenie: (0%)
-----


W sumie rzeczywiście, trochę lipną nazwę zmiennej dobrałem w porównaniu z tym jak to ma w założeniu działać (IMG:style_emoticons/default/smile.gif)
Tak czy siak, dziękuję za odpowiedzi.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 00:06