CodeIgniter 框架最显著的特征就是 MVC 模式,它的做法就是提取 url 中的'分段', 映射到某个类的某个方法,从而由该方法来输出最终显示的页面内容。那么我们第一课中就是实现一个这样的原型框架。

1. 新建 index.php 文件

2. 提取 uri

/**
 * --------------------------------------------------------------------
 * 获取 uri ,并通过 uri 调用相应的方法
 * --------------------------------------------------------------------
 */

function detect_uri() {
    
    if ( ! isset($_SERVER['REQUEST_URI']) OR ! isset($_SERVER['SCRIPT_NAME'])) {
        return '';
    }

    $uri = $_SERVER['REQUEST_URI'];
    if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0) {
        $uri = substr($uri, strlen($_SERVER['SCRIPT_NAME']));
    }

    if ($uri == '/' || empty($uri)) {
        return '/';
    }

    $uri = parse_url($uri, PHP_URL_PATH);

    // 将路径中的 '//' 或 '../' 等进行清理
    return str_replace(array('//', '../'), '/', trim($uri, '/'));
}

$uri = detect_uri();
echo $uri;

3. 提取 uri 中的分段信息

function explode_uri($uri) {

    foreach (explode('/', preg_replace("|/*(.+?)/*$|", "\\1", $uri)) as $val) {
        $val = trim($val);
        if ($val != '') {
            $segments[] = $val;
        }
    }

    return $segments;
}

$uri_segments = explode_uri($uri);
print_r($uri_segments);

4. 根据分段信息,调用相应类的方法

// 调用类和方法
$CI = new $class();
$CI->$method();

整个代码最终就完成了,为了测试效果,紧接着以上代码,写一个 包含 hello 方法的 Welcome 类,并输出 My first Php Framework!

测试代码如下:

class Welcome {

    function hello() {
        echo 'My first Php Framework!';
    }
}

现在,在浏览器中输入 http://localhost/learn-ci/index.php/welcome/hello

就可以看到页面中显示(注意先去掉代码中的上面两个函数下面的 echo 和 print_r 调试语句 ) 

My first Php Framework!

文章来自:http://www.cnblogs.com/zhenyu-whu/p/3159856.html
posted on 2015-10-16 21:09  铁马金戈007  阅读(80)  评论(0)    收藏  举报