PHP: strefaphp.net
PHP: strefaphp.net



 
Czy odwiedziłeś już te strony? -
dodał: Vengeance

Opis artykułu dodano: 24-07-2005 01:12
Singleton, wzorzec projektowy ( design patter ), mający na celu zminimalizowanie ilości utworzonych instancji dla danej klasy do jednej...
dodał: keedy | autor: Keedy | czytano: 6814 razy

Inne materiały do artykułu

Wzorzec singleton.
Wersja dla PHP5:

Kod:


<?php 
class Database 


  
private static $oInstance false

  
private function __construct ( ) 
  { 
  } 

  
public static function getinstance ( ) 
  { 
    if ( 
self::$oInstance == false 
    { 
      
self::$oInstance = new Database( ); 
    } 
    return 
self::$oInstance
  } 

?>



Wersja dla PHP4:


Kod:


<?php 
class Database 

  function 
Database ( ) 
  { 
  } 

  function &
getinstance ( ) 
  { 
    static 
$oInstance false
    if ( 
self::$oInstance == false 
    { 
      
self::$oInstance = new Database ( ); 
    } 
    return 
self::$oInstance
  } 

?>



Jak to działa?

Singleton pozwala zredukować ilość tworzonych instancji dla danej klasy, w tym wypadku "Database", do jednej, ponieważ została napisana metoda, która tworzy instancje klasy tylko raz, jeśli instancja klasy "Database" juz istnieje, jest zwracany jej obiekt, a nie jest tworzona nowa, druga instancja.

Co nam to da?

Napewno wzrost wydajniosci i spadek pamięci używanej przez skrypt, co za tym idzie, skrypt staje się szybszy i wydajniejszy.
Obiekt klasy jest dostępny wszędzie, bez potrzeby używania tablic superglobalnych ( $GLOBALS[] ).

Uzywanie:

Samo napisanie metody singleton-u nie wystarczy. Po napisaniu ów metody zmienia się sposób tworzenia instancji klasy.

Zamiast:


Kod:


<?php 
//Tutaj definicja klasy... 

$database = new database ( ); 
?>



Instancje tworzy się w ten sposób:


Kod:


<?php 
//Tutaj definicja klasy... 

$database =& Database::getinstance ( ); 

?>



Gdzie:
"Database" - to nazwa klasy.
"getinstance" - to nazwa metody z wzorcem singleton.

W PHP5 zamiast "=&" mozna dać samo "=".

Mam nadzieje, ze dobrze to wytłumaczyłem i, że zrozumiecie o co w tym chodzi ;)
PHP: strefaphp.net
wyślij email informacje forum download skrypty katalog kursy porady artykuły home współpraca reklama kontakt