Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z klasami (dziedziczenie + singletony)
lolek09
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 30.05.2003
Skąd: Kraków

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


Więc tak. Chciałem zrobić sobie klasę Module, po której dziedziczą wszelkie moduły. Klasa module miałaby mieć metodę getReference() zwracającą metodę do siebie samego. No i ten dziedziczący moduł miałby dziedziczyć tą metodę. I teraz sprawa wygląda tak:
[php:1:4616761559]<?php
class Module
{
private static $myReference;

public function &getReference()
{
if(!isset(self::$myReference))
self::$myReference = new self;
return self::$myReference;
}
}

class User extends Module
{
// Zmienne odpowiadające za różne dane z formularza logowania
public $login;

public function __construct()
{
$this->login = "Foo";
}
}

$normal = new User;
$singleton = User::getReference();
?>
<pre>
<?php var_dump($normal); var_dump($singleton); ?>
</pre>[/php:1:4616761559]

Wynik?
Cytat
object(User)#1 (4) {
 ["login"]=>
 string(3) "Foo"
}
object(Module)#2 (0) {
}


No i nie wiem za bardzo jak zrobić, żeby $singleton było obiektem user. Czy da się wogóle tak zaprojektować klasę Module?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hawk
post
Post #2





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Po prostu z singletona nie da się dziedziczyć... Jeżeli na raz może istnieć tylko jedna instancja Module (wliczając podklasy), to jeszcze da się zrobić. Jeżeli każda podklasa oddzielnie, to nie.
Możesz zrobić tak jak pokazał Bora, albo w każdej podklasie umieścić oddzielną kopię getReference(). Tak czy siak Module nie będzie singletonem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.09.2025 - 18:29