OOP v PHP: Vzor Singleton
Návrhový vzor Singleton umožňuje vytvářet objekty, u nichž je zaručena jejich unikátnost. Znamená to, že díky tomuto vzoru je možné objekt volat vždy pouze jednou.
Vzor Singleton definuje třídu, která má pouze jednu instanci.
Představme si například volání obsahu určitého souboru. Konstruktor by vždy otvíral soubor, přestože je už otevřený. Použijeme-li však pro práci se souborem třídu odvozenou podle vzoru Singleton, snadno určíme, zda je soubor otevřen a zda s ním můžeme pracovat.
Podívejme se na podobný příklad:
<?php class Singleton { private static $instance = false; public $vlastnost; private function __construct(){} public static function getInstance(){ if(self::$instance === false){ self::$instance = new Singleton; } return self::$instance; } } $a = Singleton::getInstance(); $b = Singleton::getInstance(); $a->vlastnost = "Vypiš vlastnost 'vlastnost'"; print $b->vlastnost; ?>
Skript volá třídu Singleton, která obsahuje statickou vlastnost $instance a veřejnou vlastnost $vlastnost. Privátní konstruktor zakazuje vytváření instancí mimo třídu. Statická metoda getInstance() testuje, zda je instance vytvořená – pokud ano, vracíme instanci, pokud ne, instanci vytváříme. Mimo třídu pak voláme metodu getInstance() dvakrát, poprvé vytváříme instanci, podruhé ji vracíme. Dále přiřazujeme hodnotu vlastnosti $vlastnost, kterou pak zobrazujeme v prohlížeči.
Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.
Mohlo by vás také zajímat
-
Jak lze snadno upravovat soubory v PDF?
14. září 2023 -
Aktualizujete svoji .NET webovou aplikaci? Může se hodit app_offline.htm
10. července 2024 -
Jak využít AI potenciál svého Macu?
9. ledna 2025 -
Proč je důležité tvořit obsah na váš web?
29. srpna 2024
Nejnovější
-
Umělá inteligence: Co je to GPT?
12. května 2025 -
VMC rapidně zvýšil open rate e-mailových kampaní ZONERu
9. května 2025 -
Nenechte se zaskočit TLS certifikáty na 47 dní
2. května 2025 -
Zrychlete svůj web s LiteSpeed a CZECHIA.COM
29. dubna 2025
David Pšondr
Lis 2, 2013 v 11:57Privátní by měla být i magická metoda __clone().
Michal
Lis 29, 2013 v 10:52Je tu chyba. Premenna $a pri volani statickej metody getInstance() ziskava navratovu hodnotu odkazu na prave vytvorenu instanciu triedy Singleton.