PHP: strefaphp.net
PHP: strefaphp.net



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

Opis artykułu dodano: 24-07-2005 21:25
W tym artykule zajmę się wzorcem o nazwie Registry (ang. Rejestr)...
dodał: keedy | autor: Keedy | czytano: 5715 razy

Inne materiały do artykułu

Wzorzec Registry.
Co to?

Wzorzec ten ma pełnij rolę rejestru, w którym przechowywuje się najrózniejsze dane, od konfiguracji skryptu po dane wybierane z bazy. Ja uzywam tego wzorca jedynie do przechowywania konfiguracji.

Implementacja

Oto moja implementacja wzorca Registry:

Dla PHP4:


Kod:


<?php

class Registry
{
  var 
$aVars;

  function 
set $sVariable$sValue )
  {
    if ( 
is_array $sValue ) )
    {
      foreach ( 
$sValue as $sKey => $sVal )
      {
        
$this->aVars[$sVariable '_' $sKey] = $sVal;
      }
    }
    else
    {
      
$this->aVars[$sVariable] = $sValue;
    }
  }

  function 
get $sVar )
  {
    return isset ( 
$this->aVars[$sVar] ) ? $sVar false;
  }
}
?>



Dla PHP5:


Kod:


<?php

class Registry
{
  
public $aVars;

  
public function set $sVariable$sValue )
  {
    if ( 
is_array $sValue ) )
    {
      foreach ( 
$sValue as $sKey => $sVal )
      {
        
$this->aVars[$sVariable '_' $sKey] = $sVal;
      }
    }
    else
    {
      
$this->aVars[$sVariable] = $sValue;
    }
  }

  
public function get $sVar )
  {
    return isset ( 
$this->aVars[$sVar] ) ? $sVar false;
  }
}
?>



Co nam to daje?

Zaletą wzorca Registry jest to, że ważne dane(konfiguracja), mamy w jednym miejscu.
Nie ma potrzeby uzywania tablicy superglobalnej ( $GLOBALS[] ) do uzyskania wartości róznych zmiennych.

Sposób użycia:

Przykład na pliku ini z konfiguracja jakiegoś skryptu moze wyglądać tak:

Plik ini:

Kod:


zmienna1="wartość"
zmienna2="inna_wartość"




Kod:


<?php

$registry 
= new Registry;
$registry->set 'config'parse_ini_file 'plik.ini' ) );
echo 
$registry->get 'config_zmienna1' );
echo 
$registry->get 'config_zmienna2' );

?>



Nic nie stoi na przeszkodzie aby dodać do rejestru tablice. Wówczas argument metody get ma postać np.:
config_zmienna1
config_zmienna2

Mam nadzieję, że zrozumieliście, jeśli nie odsylam na strony: http://phppatterns.com i http://php.net w języku angielskim.
PHP: strefaphp.net
wyślij email informacje forum download skrypty katalog kursy porady artykuły home współpraca reklama kontakt