Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wzorcem Registry
Forum PHP.pl > Forum > PHP > Object-oriented programming
Jarod
Mam mały problem z tym wzorcem:

Klasa:
  1. <?php
  2. class CubeRegistry
  3. {
  4. private $aRegistry = array();
  5. private static $oInstance;
  6.  
  7.  
  8. private function __construct(){}
  9.  
  10.  
  11. public static function getInstance()
  12. {
  13. if (!is_object(self::$oInstance))
  14. {
  15. self::$oInstance = new CubeRegistry();
  16. echo '<br/>Utworzylem nowy obiekt';
  17. }
  18.  
  19. echo '<br/>Zwracam instancje<br/>';
  20. return self::$oInstance;
  21. }
  22.  
  23.  
  24. public function set($sName, $mValues)
  25. {
  26. $this->aRegistry[$sName] = $mValues;
  27. }
  28.  
  29.  
  30. public function get($sName)
  31. {
  32. return $this->aRegistry[$sName];
  33. }
  34.  
  35.  
  36. public function exist($sName)
  37. {
  38. return isset($this->aRegistry[$sName]);
  39. }
  40.  
  41.  
  42. public function delete($sName)
  43. {
  44. unset($this->aRegistry[$sName]);
  45. }
  46. }
  47. ?>


Plik index.php
  1. <?php
  2.  
  3. /**
  4.  * Testowanie klasy Registry
  5.  */
  6. require_once('Core/Cube/CubeRegistry.class.php');
  7.  
  8. $oRegistry = CubeRegistry::getInstance();
  9.  
  10. $oRegistry->set('a', 'zmienna a');
  11. $oRegistry->set('b', 'zmienna b');
  12.  
  13. echo '<br/>a: ' . $oRegistry->get('a');
  14. $oRegistry = CubeRegistry::getInstance();
  15.  
  16.  
  17. echo '<br /><br /><a href="sesja.php">Dalej</a><br /><br />';
  18.  
  19. ?>



Plik sesja.php
  1. <?php
  2.  
  3. /**
  4.  * Testowanie klasy Registry
  5.  */
  6. require_once('Core/Cube/CubeRegistry.class.php');
  7. $oRegistry = CubeRegistry::getInstance();
  8. echo $oRegistry->exist('a');
  9. echo 'a: ' . $oRegistry->get('a');
  10. $oRegistry = CubeRegistry::getInstance();
  11.  
  12. echo '<a href="index.php">Wstecz</a><br/><br/>';
  13.  
  14. ?>


Odpalam index.php, tworzony jest obiekt Registry. Wrzucam do registry dwie zmienne. Wszystko ok. Przechodzę poprzez link do skryptu sesja.php i co? Obiekt registry jest tworzony jeszcze raz a ustawione wcześniej zmienne nie są widoczne. Co robię nie tak?
nospor
singleton i registry dziala w obrebie jednego requesta, a nie tak jak ty sobie myslisz ze raz utworzysz i bedzie pamietane do bólu.
Chcesz cos pamietac na dluzej, przeskakujac miedzy stronami, to musisz zaprzac do tego sesje
Jarod
Cytat(nospor @ 8.02.2007, 07:53:26 ) *
singleton i registry dziala w obrebie jednego requesta, a nie tak jak ty sobie myslisz ze raz utworzysz i bedzie pamietane do bólu.
Chcesz cos pamietac na dluzej, przeskakujac miedzy stronami, to musisz zaprzac do tego sesje

No tak. Ale klasa jest napisana poprawnie? Czy właściwość $aRegistry nie powinna być statyczna?

Zastanawiam się czy nie dodać do metody getInstance zapisu i odczytu z pliku. W ten sposób można by przekazywać dane między stronami..
nospor
Cytat
Czy właściwość $aRegistry nie powinna być statyczna?
Nie, wkoncu ma byc ona wykorzystywana przez obiekt a nie klase

Cytat
Zastanawiam się czy nie dodać do metody getInstance zapisu i odczytu z pliku. W ten sposób można by przekazywać dane między stronami..
To juz lepiej sesję
Jarod
Cytat(nospor @ 8.02.2007, 10:47:52 ) *
To juz lepiej sesję



Wiem ale jest to niemożliwe ponieważ w pewnym momencie utknę w miejscu. Dlaczego? Tu jest opisane. Temat: Sterownik bazy kontra wlasny handler sesji

Mam prośbę do moderatora o połączenie tych dwóch postów.
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.