龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP类 处理漂亮整洁的URL

时间:2014-07-10 15:01来源:网络整理 作者:网络 点击:
分享到:
PHP类 处理漂亮整洁的URL action 用 $url-gt;__get(#39;action#39;); 获得type 用 $url-gt;__get(#39;type#39;); 获得(以上两个是默认的)其余参数,前面的是参数名,后面的是参数值$url-gt;__get(#39;page#39;)

action 用 $url->__get('action'); 获得

type 用 $url->__get('type'); 获得

(以上两个是默认的)

其余参数,前面的是参数名,后面的是参数值

$url->__get('page') 的值是 2

url->__get('flag') 的值是 4

<?php
    class RequestPath{
        private $parts=array(); //存储请求URL的所有部分

        /********
            函数名  :__construct()
            函数功能 :构造函数负责实际路径的解析
            e.g : http://域名/网页/动作/动作类型/参数1名称/参数1值/参数2名称/参数2值...
            e.g : http://www.baidu.com/RequestPath.class.php/edit/trackbacks/page/2/flag/4
        *********************************************************************************************/
        public function __construct()
        {
            if(isset($_SERVER['PATH_INFO']))
            {
                $path= (substr($_SERVER['PATH_INFO'],-1) == '/') ? substr($_SERVER['PATH_INFO'],0,-1) :$_SERVER['PATH_INFO'];
            }
            else
            {
                $path= (substr($_SERVER['REQUEST_URI'],-1) == '/') ? substr($_SERVER['REQUEST_URI'],0,-1) : $_SERVER['REQUEST_URI'];  
            } 
            $bits             = explode('/',substr($path,1));
            $parsed['action'] = array_shift($bits); //将数组头部移出数组
            $parsed[]         = $parsed['action'];
            $parsed['type']   = array_shift($bits); //将数组头部移出数组
            $parsed[]         = $parsed['type'];      
            $parts_size=sizeof($bits);
            if($parts_size % 2 != 0)
            {
                $parts_size -=1;  
            }
            for( $i = 0 ; $i < $parts_size ; $i += 2 )
            {
                $parsed[$bits[$i]] = $bits[$i+1];
                $parsed[]          = $bits[$i+1]; 
            }
            if(sizeof($bits) % 2 !=0)
            {
                $parsed[] = array_pop($bits); 
            }
            $this->parts = $parsed;
        } 

        /***********************************************************************************************
        函数名   :__get  __set __isset
        函数功能 :以下函数分别为获取,设置,和测试路径元素植       
        参数$key :参数名称             
        ***********************************************************************************************/
        public function __get($key)
        {
            return $this->parts[$key]; 
        }
        public function __set($key , $value)
        {
            $this->parts[$key]=$value; 
        } 
        public function __isset($key)
        {
            return isset($this->parts[$key]);  
        } 
    }

    //这里是运用
    $url = new RequestPath();
    echo "action = ".$url->__get('action')."
    ";
    echo "type = ".$url->__get('type')."
    ";
    echo "page = ".$url->__get('page')."
    ";
    echo "index = ".$url->__get('index')."
    ";
    echo "aa = ".$url->__get('aa')."
    ";
?>
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接