Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa] Router, PHP 5
Sokal
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


Cześć,
Jako, że pracuję nad czymś co ma przypominać prosty framework (lol) napisalem klase do obsługi URL

Kod
<?php
    /**
    * Klasa Router - Przyjazne URLe
    *
    * Klasa pobierająca informacje ze zmiennej $_SERVER['PATH_INFO'] i zamieniająca ją na tablicę
    *
    * @author Dominik Sokal
    * @version 1.3 2007/05/02
    */
    
    class Router
    {
        /**
        * Pole $_path_info
        *
        * Pole do przechowywania $_SERVER['PATH_INFO']
        *
        * @access private
        * @var string
        */
        private $_path_info;
        
        /**
        * Pole $_parameters
        *
        * Pole do przechowywania sparsowanego $_SERVER['PATH_INFO']
        *
        * @access private
        * @var array
        */
        private $_parameters = array();
        
        /**
        * Pole $_glue
        *
        * Pole do przechowywania elementów łączących
        *
        * @access private
        * @var array
        */
        private $_glue;
        
        /**
        * Metoda __construct()
        *
        * Ustawianie pola $_path_info
        *
        * @access public
        * @param string Ewentualne przyjmowanie $_SERVER['PATH_INFO']
        */
        public function __construct($path_info=false)
        {
            if($path_info === false)
                $this->_path_info = $_SERVER['PATH_INFO'];
            else
                $this->_path_info = $path_info;
        }
        
        /**
        * Metoda _cleanArray()
        *
        * Oczyszczanie tablicy ze zbędnych elementów
        *
        * @access private
        * @param array Tablica z możliwymi pustymi elementami
        * @return array Oczyszczona tablica
        */
        private function _cleanArray($array)
        {
            foreach($array as $value)
            {
                if($value != '')
                    $varray[] = $value;
            }
            
            return $varray;
        }
        
        /**
        * Metoda _splitString()
        *
        * Rozdzielanie stringu do tablicy
        *
        * @access private
        * @param string
        * @return array
        */
        private function _splitString($string)
        {
            return $this->_cleanArray(explode($this->_glue, $string));
        }
        
        /**
        * Metoda setGlue()
        *
        * Pobieranie stringu z elementem łączącym
        *
        * @access public
        * @param string
        */
        public function setGlue($string)
        {
            $this->_glue = $string;
        }
        
        /**
        * Metoda parseURL()
        *
        * Konwertowanie zmiennej $_SERVER['PATH_INFO'] do tablicy
        *
        * @access public
        */
        public function parseURL()
        {
            $this->_parameters = $this->_splitString($this->_path_info);
        }        
        
        /**
        * Metoda getArray()
        *
        * Metoda do pobierania tablicy z parametrami
        *
        * @access public
        * @return array Tablica z parametrami
        */
        public function getArray()
        {
            return $this->_parameters;
        }
        
        /**
        * Metoda getParameter
        *
        * Pobieranie parametru z tablicy z parametrami
        *
        * @access public
        * @param string Klucz do tablicy z parametrami (indeksowanej numerycznie)
        * @return string Pobieranie elementu tablicy jeżeli istnieje
        * @return null
        */
        public function getParameter($id)
        {
            return (isset($this->_parameters[$id]) ? $this->_parameters[$id] : null);
        }
    }
?>

Przykład użycia:
Kod
$a = new Router();
$a->setGlue('/');
$a->parseURL();
$array = $a->getArray();


Ten post edytował Sokal 1.05.2007, 23:52:10
Go to the top of the page
+Quote Post

Posty w temacie
- Sokal   [klasa] Router   1.05.2007, 20:53:21
- - devnul   imho masz cos nie tak z gluestring, bo po co defi...   1.05.2007, 22:05:57
- - Sokal   Hmmm... Ale jak ktoś sobie chce zrobić ...   1.05.2007, 22:11:17


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:32