Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [kohana] sesja, licznik odświerzeń
wald3k
post 25.10.2010, 18:20:51
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.10.2010

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


Próbuję zrobić licznik odświeżeń strony, ale mi nie wychodzi, mam taki kod:
  1. $this->session = Session::instance();
  2. if ($this->session->get('licznik', true)) {
  3. $this->session->set('licznik', 1);
  4. }
  5. $this->session->set('licznik', $this->session->get('licznik',0)++);
  6. echo $this->session->get('licznik', 0);


Wzoruję się na kodzie przykładu z http://pl.wikibooks.org/wiki/PHP/Sesje

W przedostatniej linii otrzymuję błąd
  1. Can't use method return value in write context in
, co jest źle?

Trochę zmieniłem.
  1. $this->session = Session::instance();
  2. if ($this->session->get('licznik', true)==true) {
  3. $this->i=1;
  4. $this->session->set('licznik', $this->i);
  5. }
  6. $this->i++;
  7. $this->session->set('licznik', $this->i);
  8. echo $this->session->get('licznik', 0);


Tylko dlaczego zawsze otrzymuję 2? Wychodzi na to że
  1. if ($this->session->get('licznik', true)==true)
, jest zawsze true, tylko czemu?

Ten post edytował wald3k 25.10.2010, 18:29:54
Go to the top of the page
+Quote Post
nmts
post 25.10.2010, 18:49:23
Post #2





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


W drugim parametrze podajesz co ma zwracać metoda jeśli 'licznik' jest pusty (np. nie był wcześniej zdefiniowany), wobec tego jeśli ustawiasz w nim true - oczywistym jest, że metoda zawsze będzie zwracać jakąś prawdę.

Ten post edytował nmts 25.10.2010, 18:49:41


--------------------
Free Web Tools - narzędzia dla programistów, webdeveloperów i specjalistów seo...
Go to the top of the page
+Quote Post
wald3k
post 25.10.2010, 19:10:50
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.10.2010

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



A jak próbuję tak
  1. $liczba = $this->session->get('licznik', 0);
  2. $this->session->set('licznik', $liczba++);

to ciągle 1 otrzymuję.

sciana.gif
++$a Preinkrementacja Zwiększa $a o jeden, a następnie zwraca $a.
$a++ Postinkrementacja Zwraca $a, a następnie zwiększa $a o jeden.

Cytat
W drugim parametrze podajesz co ma zwracać metoda jeśli 'licznik' jest pusty (np. nie był wcześniej zdefiniowany), wobec tego jeśli ustawiasz w nim true - oczywistym jest, że metoda zawsze będzie zwracać jakąś prawdę.


A więc zmieniłem drugi parametr z true na 0 i działa.

Ten post edytował wald3k 25.10.2010, 19:46:25
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:33