Bontiv-Sourceer source code viewer
Root | Help
./PhpMyCMS/inc/UrlAnalyse.php
<?php

/**
 * Analyser d'URL
 *
 * @version $Id$
 * @copyright 2009
 */

/** Documentation Technique
*
* ------------------
* Ouverture de l'objet
* Class: URL_Analyser
* Static Method: Open($Query = null)
*
* Permet de commencer l'analyser d'une URL ou d'en récupérer le resultati si
* elle a déjà été faite.
*
* ---- Liste des arguments
* --$Query (Defaut: NULL) : contient le QUERY_STRING à analysé. Si cet argument
* n'est pas spécifié ou alors qu'il est nul, alors le script prends
* le QUERY_STRING de la page courante.
*
* ---- Valeur de retour
* Retourne une instance de l'objet d'analyse utilisable pour récupérer le
* résultat de l'analyse d'URL qui a été faite.
*
* -------------------
* Analyse de l'URL
* Object: URL_Analyser
* Method: Analyse()
*
* Permet de lancer manuellement une nouvelle analyse d'URL. A notée qu'elle se
* fait automatiquement à l'ouverture de l'objet.
*
* --------------------
* Récupérer la valeur d'une variable d'URL
* Object: URL_Analyser
* Method: GetVar($name)
*
* Permet de récupérer une variable posté en GET.
*
* ---- Liste des arguments
* --$name : Non de la variable dont on veut connaite la valeur.
*
* ---- Valeur de retour
* Valeur de la variable si celle-ci est défini, sinon retourne NULL.
*
* ---------------------
* Récupérer un élément de l'URL
* Object: URL_Analyser
* Method: GetUrlDir($index = 0)
*
* Permet de récupérer un élément de l'url virtuel. J'appelle par élément l'une
* des choses qui se trouve entre les '/' de l'url.
*
* ---- List des arguments
* --$index : Si positif, alors retourne l'élément de l'URL ayant pour index
* $index. Le premier élément a l'index 0. Si un nombre négatif est entré, alors
* essaye de trouver l'éméent en partant de la fin de l'URL.
*
* ---- Valeur de retour
* Retourne l'élément à l'index $index, ou NULL s'il n'existe pas.
*
* **/

class URL_Analyser {

public
$Query;
protected
$URL_List = array();
protected
$NewQuery;
protected
$GetVar = array();
static private
$list = array(); //liste des URL_Analyser deja existant.

public function GetVar($name){
    return (isset(
$this->GetVar[$name]))?($this->GetVar[$name]):(NULL);
}


static public function
Open($Query = null) {
   
$Query = ($Query===NULL)?($_SERVER['QUERY_STRING']):($Query);
    if (
array_key_exists($Query, self::$list)) {
        return
self::$list[$Query];
    } else {
        return new
URL_Analyser($Query);
    }
}

function
__construct ($Query) {
   
$this->Query = $Query;
   
$this->Analyse();
}

function
Analyse() {
   
$posI = strpos($this->Query, '?');
   
$posI = ($posI !== FALSE)?($posI):(strlen($this->Query));

   
$this->NewQuery = strtolower(substr($this->Query, $posI + 1, strlen($this->Query) - $posI - 1));
   
$this->GetUrlList(substr($this->Query, 0, $posI));
   
$this->GetVarList($this->NewQuery);
}

protected function
GetVarList($Query = NULL){
   
$Query = ($Query === NULL)?($this->NewQuery):($Query);
   
$varlist = explode('&', $Query);
    foreach(
$varlist as $arg){
       
$arg = explode('=', $arg);
        if (
count($arg) > 2)
           
trigger_error('Il ne peux pas y avoir deux valeurs à une seule variable. Seul la première sera prise.', E_USER_ERROR);
       
$this->GetVar[trim($arg[0])] = trim(@$arg[1]);
    }
}

protected function
GetUrlList ($URL) {
   
$this->URL_List = explode('/', $URL);

   
$temp = $this->URL_List;
   
$this->URL_List = array();

    foreach(
$temp as $arg){
        if (
$arg) {
           
$this->URL_List = array_merge($this->URL_List, array($arg));
        }
    }
    unset(
$temp);
}

function
GetUrlDir($index = 0){
   
$index = ($index >= 0)?($index):(count($this->URL_List) + $index);
    return (isset(
$this->URL_List[$index]))?($this->URL_List[$index]):(NULL);
}

function
GetVarValue($var){
    return (isset(
$this->GetVar[$var]))?($this->GetVar[$var]):(FALSE);
}
}
?>
Presented with Bontiv-Sourceer