![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 30.05.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie, lepsze rozwiązanie, dzieki. Ale nie rozumiem o co ci chodziło z tym, że źle by się zachowywało przy wielu obiektach. Ja chciałem, żeby moduły dziedziczyły z Module i dzięki temu każdy z nich dziedziczyłby metodę getReference, więc każdy zwracałby referencję do siebie samego nie zależnie ile byłoby tych obiektów.
Używałbym np. [php:1:31ad2614a9]<?php $test1 = User::getReference(); // A nie $test2 = Module::getReference('user'); ?>[/php:1:31ad2614a9] Ale dzięki, przyjrzę się i przemyślę to jeszcze raz. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 05:35 |