Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [kohana] sesja, licznik odświerzeń
Forum PHP.pl > Forum > PHP > Frameworki
wald3k
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?
nmts
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ę.
wald3k

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.
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.