Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Singleton - problem, moze lamerski
bartyk
post 6.04.2005, 09:44:00
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 8.11.2004

Ostrzeżenie: (10%)
X----


console_class.php:
  1. <?php
  2.  
  3. class console_class {
  4.  
  5. var $content;
  6. var $window;
  7. var $title;
  8.  
  9. function &singleton() {
  10.  
  11. static $instance;
  12.  
  13. if (!isset($instance)) {
  14. $instance=new console_class();
  15. }
  16. return $install;
  17. }
  18.  
  19. function set_console($window, $title) {
  20.  
  21. $this->content='';
  22. $this->window=$window;
  23. $this->title=$title;
  24. }
  25.  
  26. ......
  27.  
  28. }
  29.  
  30. ?>


main.php:
  1. <?php
  2.  
  3. require_once('class.console.php');
  4.  
  5. var $MyConsole;
  6.  
  7. $MyConsole = &console_class::singleton();
  8. $MyConsole->set_console(&#092;"nazwa\", \"tytul\");
  9. ....
  10.  
  11. ?>


niestety pojawia sie komunikat:
Fatal error: Call to a member function on a non-object in ...

wskazując na linię z wywołaniem metody set_console

Gdzie tkwi błąd?


--------------------
Pozdr

Bartek
Go to the top of the page
+Quote Post
kubatron
post 6.04.2005, 09:47:17
Post #2





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


Popatrz Signeleton masz w $instance a potem dajesz return do $install czy to nie dziwne??


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
bartyk
post 6.04.2005, 09:57:12
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 8.11.2004

Ostrzeżenie: (10%)
X----


Zdecydowanie powinienem się przespać laugh.gif

Błąd był tak oczywisty, że go nie zauważyłem sad.gif

Jeszcze jedno pytanie: jaki jest zasięg zmiennej $MyConsole? W jaki sposób odwołać się do funkcji z poziomu np. innej klasy?

Sorki za to lamerstwo, ale to moje początki sad.gif


--------------------
Pozdr

Bartek
Go to the top of the page
+Quote Post
M4chu
post 6.04.2005, 10:57:58
Post #4





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 28.09.2003
Skąd: Rzeszów

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


Nie mozesz uzywac 'var' poza klasą, gdybys przetestowal to co wyslales to bys parse errora dostal.
W ten sposob jaki to napisales to $MyConsole ma zasięg pojedynczy. A jak sie odwolac z poziomu innej klasy? Przez singletona oczywiscie ;p
Go to the top of the page
+Quote Post
bartyk
post 6.04.2005, 11:13:12
Post #5





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 8.11.2004

Ostrzeżenie: (10%)
X----


Nie wiem czy dobrze zrozumialem sad.gif

Czyli wywołanie z innej klasy powinno być następujące?? (zakładam, że klasa console_class ma metode pisz()
  1. <?php
  2.  
  3. class nowa{
  4.  
  5.  function test() {
  6.  $konsola = &console_class::singleton();
  7.  $konsola->pisz();
  8.  }
  9. }
  10.  
  11. ?>


--------------------
Pozdr

Bartek
Go to the top of the page
+Quote Post
NuLL
post 6.04.2005, 13:30:39
Post #6





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


  1. <?php
  2.  
  3.  
  4. class console_class {
  5.     
  6.     var $content;
  7.     var $window;
  8.     var $title;
  9.     
  10.     function &&#092;singleton() {
  11.         
  12.         if (!isset($GLOBALS['console_class'])) {
  13.             $GLOBALS['console_class']=&new console_class();
  14.             }
  15.         return $GLOBALS['console_class'];
  16.         }
  17.         
  18.     function set_console($window, $title) {
  19.         
  20.         $this->content='';
  21.         $this->window=$window;
  22.         $this->title=$title;
  23.         }
  24.         
  25. ......
  26.  
  27. }
  28.  
  29. ?>

Do czegos takiego moze sie dowolac z dowolnego miejsca jeślo chodzi o php v5 of corz


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
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: 20.06.2025 - 16:38