![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 204 Pomógł: 0 Dołączył: 26.12.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Może mnie ktoś oświecić dlaczego używa się singletonów? np:
skoro to samo można osiągnąć w ten sposób?:
Widze jakie są różnice, jednak nie rozumiem dlaczego singletony są stosowane skoro zapis Foo::bar(); jest wygodniejszy i kod klasy krótszy... Czy za pomocą singletonów można zrobić coś, o czym nie wiem? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 204 Pomógł: 0 Dołączył: 26.12.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Bora: Foo::$bar do zmiennej i Foo::bar do stałej
Cudi: Mi też się wydaje, że powinno się używać singletonów, tylko zastanawiam się dlaczego:) W PHP4 było to uzasadnione, w PHP5 też musi się znaleźć jakiś powód;) Naturalnie czasem bez singletonów się nie obejdzie. Weźmy na przykład klasę Template, gdy chcemy mieć jeden główny szablon, do którego moglibyśmy odwołać się z każdej innej klasy, wtedy możemy napisać np: [php:1:71a7711270]<?php final class Page { private static $reference; private function __construct() {} public static function getRef() { if(self::$reference == null) { self::$reference = new Template('Main'); } return self::$reference; } } $main = Page::getRef(); $main->assign('title', 'Main'); $main->assign('css', 'file', 'main'); itd... ?>[/php:1:71a7711270] Ale co w przypadkach małych klas, np takich jak Temp, pokazana wcześniej. Nie ma sensu chyba tworzyć zmiennej referencji gdy zależy nam na wygodnym i szybkim dostępie do metod, np Temp::clear(), Temp::add('test'); Temp::get() itd... To samo tyczy się klasy SQL, nie zaobserwowałem gromadzenia się żadnych śmieci, nie wygląda też, żeby działała wolniej. Chyba faktycznie musimy poczekać na kogoś mądrzejszego:) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 18:45 |