PHP单文件入口URL路由原理

1 单一入口模式的好处

  • 所有的服务器端文件和目录的起始路径都是基于这个入口文件index.php,路径处理变得简单

2 简单实现代码

直接上代码:

 

<?php
/*******************************************************
 *
 * URL 路由原理展示代码
 *
 * 浏览器访问地址: http://server/index.php?C=Controler1&M=Method1
 * 根据C找到控制器类,再根据M找到方法,然后执行这个方法
 * 
 * ****************************************************/
$C = isset($_GET['C'])?$_GET['C']:NULL;
$M = isset($_GET['M'])?$_GET['M']:NULL;

if($C != NULL && $M != NULL && class_exists($C) && method_exists($C, $M)) {
    $cObj = new $C();
    $cObj->$M();
}else{
    echo '找不到控制器或方法';
    exit;
}

// 控制器1
class Controler1
{
    public function Method1()
    {   
        echo 'Controler1, Method1';
    }   
    public function Method2()
    {   
        echo 'Controler1, Method2';
    }   
}
// 控制器2
class Controler2
{
    public function Method1()
    {   
        echo 'Controler2, Method1';
    }   
    public function Method2()
    {   
        echo 'Controler2, Method2';
    }
}

 

基本思路是浏览器端通过URL字符串提供控制器类的名字和方法的名字,PHP据此找到对应的类和方法。

PHP存在可变变量、可变函数、可变类,变量名、类名、方法名本身也可以作为变量的值在语句中使用,这在C#中只能通过反射解决吧。

你可能感兴趣的:(PHP单文件入口URL路由原理)