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 ?


--------------------
Pomogłem ? Kliknij pomógł :)
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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 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 smile.gif
A klasa będzie wykorzystywana w kalendarzu i w sumie to dopiero zaczątek jej jest.


--------------------
Pomogłem ? Kliknij pomógł :)
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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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ć smile.gif
Tak czy siak, dziękuję za odpowiedzi.


--------------------
Pomogłem ? Kliknij pomógł :)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 13:37