<?php
/**
* Klasa umozliwiajaca wykozystywanie "przyjaznych urli"
*
* dozwolone separatory
* / . , : - ^ * " '
*
*
* @version 0.1
*
* @author Jonatan 'essEy' : essey(at)rcd.pl
*/
class Router
{
private $sUrl;
// adres url pobrany z tablicy $_GET
private $aParams = array(); // array z parametrami
private $sActionDefault;
// domysla akcja
function __construct()
{
$this->sUrl = substr( $_SERVER['PATH_INFO'], 1
); }
/**
* Ustala adres URL
*
* @param string $sUrl - opcionalnie
* @return string $this->sUrl
*/
function setUrl( $sUrl )
{
return $this->sUrl = $sUrl;
}
/**
* Ustala domysla akcje
*
* @param string $value
* @return string $this->sActionDefault
*/
function setActionDefault( $value )
{
return $this->sActionDefault = $value;
}
/**
* Ustala string na array na podstawie serparatorow
*/
function convertUrl()
{
return ( $this->aParams = preg_split( '/[\/\.\,\:\-\^\*\"']/', $this->sUrl, -1
) ); }
/**
* Ustala parametr z url o podanym id
*
* @param int $aId
* @return string param
*/
function getParam( $sId )
{
return ( isset( $this->aParams[ $sId ] ) ?
$this->aParams[ $sId ] : '' ); }
/**
* Ustala nazwe obecnej akcji
* Dla 0 = pierwsza pozycja
* Dla 1 = ostatnia pozycja
*
* @param int
* @return string nazwa akcji
*/
function getAction( $sId=0 )
{
if ( $sId == 1 )
{
return ( !empty( $this->aParams[0
] ) ?
end( $this->aParams ) : $this->sActionDefault ); }
else
return ( !empty( $this->aParams[0
] ) ?
$this->aParams[0
] : $this->sActionDefault ); }
/**
* Ustala obecna domene
*
* @return string
*/
function getDomain()
{
return $_SERVER["HTTP_HOST"];
}
/**
* Ustala oryginalny obecny adres url
*
* @param string URL
*/
function getUrl()
{
return $this->sUrl;
}
/**
* Tworzy URL odpowiadajacy podanej akcji.
*
* @param string $sName Nazwa akcji, ktora ma odpowiadac URLowi
* @return string URL
*/
function createUrl( $sName='' )
{
$tDirName = explode( '/', $_SERVER['SCRIPT_NAME'] ); $tFileName = end( $tDirName );
return $tFileName .'/'. $sName;
}
}
?>
Klasa umożliwia korzystanie z wygodnych urli, czyli możliwość stosowania na stronie takich urli: index.php/test:pap,dalej.muminki^gumisie
W adresie mogą być wykorzystane następujące separatory:
/ . , : - ^ * " 'Wykorzystane:
<?php
$Router = new Router;
# $Router ->setUrl( 'tutaj/mozna.podac:adres^url^ktorym*zajmie"sie-router' );
$Router ->convertUrl();
$Router ->setActionDefault( 'index' );
#przykladowe wykozystanie
var_dump( $Router->getParam(1
) ); // pobieramy parametr o id 1 var_dump( $Router->getAction() ); // pobieramy nazwe akcji var_dump( $Router->getDomain() ); // pobieramy domene var_dump( $Router->getUrl() ); // pobieramy obecny url var_dump( $Router->createUrl('tes') ); // tworzymy url ?>
Ten post edytował essEy 29.01.2006, 00:03:41