Na tym forum jestem nowy, wiec w razie w prosze o wyrozumialosc

Przechodzac do meritum... . Zaprojektowalem klase(prototyp), ktora ma byc alternatywnym rozwiazaniem do friendly url i mod_rewrite.
Moje pytanie, jak Wy to widzicie od storny praktycznej? moze ktos juz stosowal podobne rozwiazania?
Mile widziane wszelkie uwagi i porady

Htaccess
CODE
DirectoryIndex page page.php
<Files page>
ForceType application/x-httpd-php
Options +MultiViews
</Files>
Klasa PageUrl:
CODE
<?php
class PageUrl{
/**
* Instancja klasy
*/
private $instance = null;
/**
* Nazwa subdomeny
*
* Jesli nie ma subdomeny to 0
*
* @var string
*/
static public $subDomain = false;
/**
* Nazwa aktualnej podstrony
*
* @var string
*/
static public $page = null;
/**
* Lista parametry z urla
*
* @var array
*/
static public $allParamArray = array();
/**
* Liczba parametrow w url
*
* @var integer
*/
static public $countAllParam = null;
function __construct()
{
$this->instance = true;
// Ustawianie subdomeny
self::$subDomain = explode(\".\", $_SERVER[\'HTTP_HOST\']);
if(count(self::$subDomain) >= 3)
{
self::$subDomain = self::$subDomain[0];
}
else
{
self::$subDomain = false;
}
// Ustawianie listy parametrow z urla
self::$allParamArray = explode( \'/\', substr( $_SERVER[\'PATH_INFO\'], 1) );
// Jesli ostani parametr jest pusty usun go
if(end(self::$allParamArray) == \'\')
{
array_pop(self::$allParamArray);
}
// Zliczanie parametrow
self::$countAllParam = count(self::$allParamArray);
foreach (self::$allParamArray as $key => $value)
{
if(!Validator::GETValid($value))
{
self::$allParamArray[$key] = \'NotValid\';
}
}
// Ustawianie nazwy podstorny
self::$page = self::$allParamArray[0];
}
/**
* Pobiera pojedynczy parametr
*
* @param string $number
* @return Array
*/
static public function GetParamValue($number)
{
return self::$allParamArray[$number];
}
/**
* Pobiera pary parametor Name => Value
*
* @param string $which
* @return array
* @return false
*/
static public function GetParamNameValue($which = null)
{
if(empty($which))
{
for($i = 0; $i <= self::$countAllParam-1; $i++)
{
if($i == 0)
{
$ParamNameAsValueArray[\'page\'] = self::$allParamArray[$i];
}
else
{
if(!empty(self::$allParamArray[$i]) && !empty(self::$allParamArray[$i+1]))
{
$ParamNameAsValueArray[self::$allParamArray[$i]] = self::$allParamArray[$i+1]; $i++;
}
}
}
return $ParamNameAsValueArray;
}
else
{
for($i = 1; $i <= self::$countAllParam; $i+=2)
{
if(self::$allParamArray[$i] == $which && !empty(self::$allParamArray[$i+1]))
{
$ParamValue = self::$allParamArray[$i+1];
}
}
if(!empty($ParamValue))
{
return $ParamValue;
}
else
{
print \'Nie istnieje wartosc dla parametru \'.$which;
return false;
}
}
}
/**
* Tworzenie linkow
*
* @param string $pagename
* @param string/array $parameters
* @return string
*/
static public function CreateUrl($pagename, $parameters = null)
{
$url .= \'/oop/page/\'.$pagename.\'/\';
if(is_array($parameters))
{
foreach ($parameters as $key => $value)
{
if(!empty($key) && !empty($value))
{
$url .= $key.\'/\'.$value.\'/\';
}
}
}
else
{
print \'Link zdupiony\';
// Dopisac dla stringa
}
return $url;
}
}
?>
I przykladowe wykorzystanie:
CODE
<?php
new PageUrl();
print \"Tablica wszystkich parametrow:<br>\";
print_r(PageUrl::$allParamArray);
print \"<br>Tablica wszystkich parametrow uporzadkowanych key => value<br>\";
print_r(PageUrl::GetParamNameValue());
print \"<br>Aktualna strona:<br>\";
print PageUrl::$page;
print \"<br>Pobieranie Value dla podanego Key:<br>\";
print(PageUrl::GetParamNameValue(\'jakisparametr\'));
print \"<br>Pobranie drugiego elementu z tablicy parametrow:<br>\";
print_r(PageUrl::GetParamValue(1));
print \"<br>Tworzenie linka:<br>\";
$tab = array(\'Pokaz\' => \'Najnowsze\', \'Od\' => \'10\', \'Do\' => \'20\');
print PageUrl::CreateUrl(\'Artyklu\', $tab);
?>