CodeIgniter 框架最顯著的特徵就是 MVC 模式,它的作法就是提取 url 中的'分段', 映射到某個類的某個方法,從而由該方法來輸出最終顯示的頁面內容。那麼咱們第一課中就是實現一個這樣的原型框架。php
1. 新建 index.php 文件瀏覽器
2. 提取 uri框架
1 /** 2 * -------------------------------------------------------------------- 3 * 獲取 uri ,並經過 uri 調用相應的方法 4 * -------------------------------------------------------------------- 5 */ 6 7 function detect_uri() { 8 9 if ( ! isset($_SERVER['REQUEST_URI']) OR ! isset($_SERVER['SCRIPT_NAME'])) { 10 return ''; 11 } 12 13 $uri = $_SERVER['REQUEST_URI']; 14 if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0) { 15 $uri = substr($uri, strlen($_SERVER['SCRIPT_NAME'])); 16 } 17 18 if ($uri == '/' || empty($uri)) { 19 return '/'; 20 } 21 22 $uri = parse_url($uri, PHP_URL_PATH); 23 24 // 將路徑中的 '//' 或 '../' 等進行清理 25 return str_replace(array('//', '../'), '/', trim($uri, '/')); 26 } 27 28 $uri = detect_uri(); 29 echo $uri;
3. 提取 uri 中的分段信息函數
1 function explode_uri($uri) { 2 3 foreach (explode('/', preg_replace("|/*(.+?)/*$|", "\\1", $uri)) as $val) { 4 $val = trim($val); 5 if ($val != '') { 6 $segments[] = $val; 7 } 8 } 9 10 return $segments; 11 } 12 13 $uri_segments = explode_uri($uri); 14 print_r($uri_segments);
4. 根據分段信息,調用相應類的方法測試
1 // 調用類和方法 2 $CI = new $class(); 3 4 $CI->$method();
整個代碼最終就完成了,爲了測試效果,緊接着以上代碼,寫一個 包含 hello 方法的 Welcome 類,並輸出 My first Php Framework!url
測試代碼以下:spa
class Welcome { function hello() { echo 'My first Php Framework!'; } }
如今,在瀏覽器中輸入 http://localhost/learn-ci/index.php/welcome/hello調試
就能夠看到頁面中顯示(注意先去掉代碼中的上面兩個函數下面的 echo 和 print_r 調試語句 ) ci
My first Php Framework!