Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SINGLETON]Czy można stosować getInstance() w statycznych metodach?
cyklotrial
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 5.06.2009

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


Hej,

Zastanawiam się czy wykorzystanie metody "getInstance" w metodach statycznych, w klasie która jest Singletonem jest poprawne.
  1. class Singleton{
  2. private static $instance;
  3. private $varOne = 0;
  4. private function __construct(){}
  5.  
  6. static function getInstance(){
  7. if(self::instance==null){
  8. self::instance=new Singleton();
  9. }
  10. return self::instance;
  11. }
  12.  
  13. static function doSomething(){
  14. echo self::getInstance()->varOne;
  15. }
  16. }

Zamiast pisać:
  1. Singleton::getInstance()->doSomething();

Mogę używać:
  1. Singleton::doSomething();


Dlaczego tak? Chciałbym skrócić zapis najczęściej używanych metod, ale mam spore obawy co do tego czy taki zapis nie jest niezgodny z wzorcem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
#luq
post
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Dokładnie chodziło mi o to o czym wspomniał @-=Peter=-.
Nie ważne, że w 99% aplikacji łączysz się z jedną bazą, chodzi o to, że klasa DataBase nie jest Singletonem bo to nie jest byt którego może być albo wcale albo sztuk jeden.

Poza tym zawsze powinno się zostawiać furtkę na łatwą rozbudowę jeśli nie wymaga to wielkich nakładów pracy. Debilny przykład - dodania do tabelki pola insertDate z ustawionym current_time, przypuśćmy, że w momencie pisania nie mam planów żeby wykorzystać to pole, ale za 2 lata będę chciał napisać feature, żeby oznaczać użytkowników po miesiącu rejestracji. Jeśli takiego pola nie stworzyłem na początku to tych danych już nie zdobędę ale pomyślałem i utworzyłem sobie takie pole i mogę to wykonać.

Przykład totalnie nie adekwatny ale pokazuje to co chciałem - każdy powinien myśleć jak w przyszłości można rozbudować aplikacje i tworzyć sobie od razu takie możliwości jeśli nie kosztuje go to za dużo.

Ten post edytował #luq 20.06.2011, 22:10:46
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: 5.10.2025 - 11:02