Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wzorzec Rejestr
smiady
post 11.07.2014, 12:59:44
Post #1





Grupa: Zarejestrowani
Postów: 137
Pomógł: 2
Dołączył: 2.07.2007
Skąd: Ostrzeszów

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


Poznałem właśnie wzorzec rejestr i mam taki problem:

register.php
  1. class RegisterException extends Exception {}
  2.  
  3. class Register {
  4. private $store= array();
  5.  
  6. public function set($object, $name= NULL) {
  7. $name= (!is_null($name)) ? $name : get_class($object);
  8. $name= strtolower($name);
  9.  
  10. if($this->contains($name))
  11. return $this->store[$name];
  12.  
  13. $this->store[$name]= $object;
  14.  
  15. return true;
  16. }
  17.  
  18. public function get($name) {
  19. if(!$this->contains($name))
  20. throw new RegisterException('Podany obiekt nie istnieje !');
  21.  
  22. return $this->store[$name];
  23. }
  24.  
  25. public function remove($name) {
  26. if(!$this->contains($name))
  27. throw new RegisterException('Podany obiekt nie istnieje !');
  28.  
  29. unset($this->store[$name]);
  30.  
  31. return true;
  32. }
  33.  
  34. public function contains($name) {
  35. if(isset($this->store[$name]))
  36. return true;
  37.  
  38. return false;
  39. }
  40. }
  41.  
  42. class Klasa {
  43. private $liczba1;
  44.  
  45. public function __construct($integer) {
  46. $this->liczba1= $integer;
  47. }
  48.  
  49. public function setLiczba($integer) {
  50. $this->liczba1= $integer;
  51. }
  52.  
  53. public function getLiczba() {
  54. return $this->liczba1;
  55. }
  56. }


register_start.php
  1.  
  2. require 'register.php';
  3.  
  4. $klasa1= new Klasa(15);
  5.  
  6. $klasa2= clone $klasa1;
  7. $klasa2->setLiczba(30);
  8.  
  9. $klasa3= clone $klasa1;
  10. $klasa3->setLiczba(50);
  11.  
  12. $register= new Register();
  13. $register->set($klasa1, 'klasa1');
  14. $register->set($klasa2, 'klasa2');
  15. $register->set($klasa3, 'klasa3');
  16.  
  17. $_SESSION['register']= $register;
  18.  
  19. echo '<a href="register2.php" title="przejdź do odczytu rejestru">odczyt rejestru</a>';


register2.php
  1.  
  2. require 'register.php';
  3.  
  4. $register= isset($_SESSION['register']) ? $_SESSION['register'] : null;
  5.  
  6. try {
  7. $klasa1= $register->get('klasa1');
  8. $klasa2= $register->get('klasa2');
  9. $klasa3= $register->get('klasa3');
  10. } catch(RegisterException $e) {
  11. echo $e->getMessage();
  12. }
  13.  
  14. echo $klasa1->getLiczba() . '<br/>';
  15. echo $klasa2->getLiczba() . '<br/>';
  16. echo $klasa3->getLiczba() . '<br/>';


Najpierw startuje od register_start.php, potem klikam na linka i mam taki błąd:
Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;Register&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\xampp\xampp\htdocs\php\register2.php on line 9
Go to the top of the page
+Quote Post

Posty w temacie


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: 24.07.2025 - 13:19