![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem. Mianowicie chcialbym zabezpieczyc klase przed stworzeniem jej obiektu (w sensie public) ale potrzebuje jej singletona (instancji klasy). Czy to jest wykonalne?
W tym typadku nie moge stworzyc instancji obiektu poniewaz konktruktor jest private. Probowalem dac private static __construct() {} a pozniej self::__construct(); ale to nie pyka. Jest jakis sposob -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Czemu nie możesz? Poszukałem trochę i każda ze znalezionych implementacji ma prywatny konstruktor, a (podobno) działa.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Wywal "&" sprzed getInstance() - obiekty są domyślnie przekazywane przez referencje.
2. Nie, w PHP tego nie zrobisz - brakuje mu klas wewnętrznych czy "pakietowych". |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Konstruktor może być prywatny, na pewno nie statyczny.
Co do getInstance powinno być publiczne i statyczne. Robisz tak:
Chyba coś takiego o ile dobrze pamiętam. Ten post edytował fifi209 26.11.2010, 08:16:13 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
private function __construct()
a pozniej uzyc new self(); -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
private function __construct() a pozniej uzyc new self(); Na siłę jak podałem działający przykład. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Nie zauważyłem, faktycznie masz prywatną metodę getInstance, więc jak to ma działać? Zrób ją publiczną i powinno być dobrze.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.08.2025 - 13:09 |