Singleton to sposob na stworzenie klasy takiej, aby w aplikacji mozna bylo utowrzyc jej tylko jeden obiekt.
Co to znaczy? Ano nie zrobisz $obiekt = new MojaKlasa();
A dlaczego?
1. Kontruktor klasy powinien byc prywatny (powinien, bo jak uzywasz php4, to nie mozesz tego okreslic).
2. Obiekty tworzysz za pomoca innej metody, najczesniej nazwanej getInstance.
Przyklad:
<?php
class Klasa
{
private function __construct()
{
// tu robisz to co w normalnym konstruktorze chcialbys zrobic.
}
public function getInstance()
{
if(!isset(self::$_oInstance)) {
$sClassName = __CLASS__;
self::$_oInstance = new $sClassName;
}
return self::$_oInstance;
}
}
?>
Jak widzisz getInstace sprawdza czy obiekt juz istnieje. Jezeli nie: tworzy go i zwraca. Jezeli instnieje: zwraca go.
A jak tego uzywac?
<?php
$obiekt = Klasa(); // zwroci blad!
$obiekt = Klasa::getInstance(); // tak jest dobrze
?>
Pamietajac, o tym ,ze klasy sa dostepne w kazdym pliku, poniewaz ich nazwy sa globalne, mozesz utworzyc tzw instancje (egzemplarz klasy - obiekt) w dowolnym miejscu.... Oczywiscie jezeli plik z klasa zostal wczesniej dolaczony.
O singletonie przeczytasz takze na php.net.
PS. Dodam jeszcze, ze ten rodzaj klas stosujesz tak, gdzie nie chcesz aby w aplikacji pojawil sie drugi obiekt tej klasy. Przyklad? Baza danych - jedna baza danych wystarczy w aplikacji. Inny? - cos co steruje aplikacja - jądro - dwa jądra? Hyh tylko u istot zywych

Pozdrawiam.