Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][OOP] Dziwny błąd
sweter
post 21.09.2011, 09:53:37
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Witam,
piszę klasę do cechowania w Zend Frameworku, jednak mam pewien problem. Klasa wygląda tak:
  1. class Application_Model_Cache
  2. {
  3.  
  4. // nazwa cache
  5. private $name;
  6. protected $frontendOptions;
  7. protected $backendOptions;
  8. public $cache;
  9.  
  10. public function __construct(){
  11. // opcje frontend
  12. $this->frontendOptions = array(
  13. 'lifetime' => null,
  14. 'automatic_serialization' => true
  15. );
  16.  
  17. // opcje backendu
  18. $this->backendOptions = array(
  19. 'cache_dir' => '../cache/'
  20. );
  21.  
  22. // cache
  23. $this->cache = Zend_Cache::factory('Core',
  24. 'File',
  25. $this->frontendOptions,
  26. $this->backendOptions);
  27. }
  28.  
  29. /**Metoda ustawiająca nazwę*/
  30. public function cacheSetName($name){
  31. $this->name = $name;
  32. }
  33.  
  34. /**Zwraca cache*/
  35. public function cacheGetData(){
  36. echo gettype($this->cache);
  37. }
  38.  
  39. /**Zapisuje cache*/
  40. public function cacheSaveData($data){
  41. echo gettype($this->cache);
  42. $this->cache->save($data, $this->name);
  43. }
  44.  
  45. /**Czyści cache*/
  46. public function cacheDelData(){
  47. echo gettype($this->cache);
  48. $this->cache->remove($this->name);
  49. }
  50.  
  51. }

Jak widać w metodach cacheDelData(), cacheSaveData() i cacheGetData() wywołuję funkcję gettype() z parametrem $this->cache;
Wszystko wywołuję tak:
  1. $cache = new Application_Model_Cache();
  2. $cache->cacheSetName('nazwa');
  3. $cache->cacheSaveData(array('d'));
  4. $cache->cacheGetData();
  5. $cache->cacheDelData();

Metody cacheSaveData() i cacheDelData() wyświetlają mi 'object', tylko cacheSaveData() zwraca mi NULL i 'object'.
O co może chodzić? Nie rozumiem dlaczego ta funkcja zwraca mi null i 'object'.
Co możecie poradzić?


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.09.2011, 09:57:21
Post #2





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




Jedno wywołanie metody nie może ci zwrócić naraz null oraz 'object'. Widać wykonujesz kilka wywołań tej metody


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sweter
post 21.09.2011, 10:00:30
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


No właśnie i mnie to dziwi.
W kontrolerze zostawiłem tylko
  1. $cache = new Application_Model_Cache();
  2. $cache->cacheSaveData(array('d'));

i nadal mam tylko 'null' i 'object'

Ten post edytował sweter 21.09.2011, 10:02:48


--------------------
Go to the top of the page
+Quote Post
bastard13
post 21.09.2011, 10:08:12
Post #4





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Kod klasy jest taki jak powyżej i wywołujesz tylko te dwie metody, nic więcej?
Może chodzi ci o to, że metoda $cache->cacheSaveData(array('d')); zwraca null, co jest prawdą, bo ona nic nie zwraca (brak return w metodzie), a 'object' jest wyświetlany, bo wywołujesz gettype(). Innego pomysłu nie mam.


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.09.2011, 10:08:31
Post #5





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




public function cacheSaveData($data){
echo 'save'.gettype($this->cache);
$this->cache->save($data, $this->name);
}

A jak to nie pomoże to proponuje debug_backtrace()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 21.05.2024 - 00:03