美文网首页
PHP实现单一入口文件

PHP实现单一入口文件

作者: 晓得为_ | 来源:发表于2017-06-21 15:36 被阅读0次

基本思路

1.入口文件(通过.htaccess文件中的rewrite功能把所有请求都转向这个文件)

2.通过URL传参 访问对应类的名字及其方法

1.1.htaccess 文件

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

2.1.动态初始化类名方法

//URL路由原理
/**
 *  路由作用
 * 获取url中的c和a变量,执行c类对应的方法a,实现不同的路由
 */
class App {
    public $c;
    public $a;

    public function run()
    {
        $c = isset($_GET['c']) ? $_GET['c'] : "Index"; //url提供类名字的变量名
        $a = isset($_GET['a']) ? $_GET['a'] : "Index"; //url提供方法名字的变量名

        $c .= "Controller";
        if( class_exists($c) && method_exists($c, $a) ) {
            $o = new $c();  
            $o->$a();  
        }else{  
            echo "error";  
            exit();
        }
    }
}

2.2

$c = $_GET['c']; //获取controller
$a = $_GET['a']; //获取action
require_once AROOT.'controller/'.$c.'/'.$a.'.class.php'; //载入文件/controller/user/login.class.php
$o = new $c.'Controller'; // 新建对象userController
call_user_func(array($o,$a));   //调用对象$o(userController)里的方法$a(login)

相关文章

网友评论

      本文标题:PHP实现单一入口文件

      本文链接:https://www.haomeiwen.com/subject/dcqtcxtx.html