通过URL访问php对应的类中的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32080545/article/details/81012972

主要是一个小项目,没必要使用框架,就简单处理了使用一个文件类调用多个方法,避免重复创建php文件去实现这些类方法的问题,写好了还是记录一下,方便日后继续使用:
pathinfo模式 ,例如:index.php/job/get_list?a=1&b=2&c=3
通过这个URI可以访问到 Job.php中 Job类的getList()方法,其中传入了参数[‘a’=>’1’,’b’=>’2’,’c’=>’3’]
具体实现:

<?php
/**
 * Created by PhpStorm.
 * User: zheng
 * Date: 2018/7/12
 * Time: 10:32
 */

try{
    //获取类名与方法
    $uri    = parse_url($_SERVER['PATH_INFO']);
    $query  = $uri['path'];
    $pathInfo = array_values(array_filter(explode('/',$query)));
    $className = ucfirst(isset($pathInfo[0])?$pathInfo[0]:'');
    $methodName = isset($pathInfo[1])?$pathInfo[1]:'';
    if(!$className||!$methodName){
        throw new \Exception();
    }
    $methodNameArr = explode('_',$methodName);
    $method = '';
    foreach ($methodNameArr as $key=>$value){
        if($key!=0){
            $method.=ucfirst($value);
        }else{
            $method=$value;
        }
    }
//获取查询参数
   $params = $_GET;
    $fileDir = $className.'.php';
    include_once $fileDir;
    $classObj = new $className();
    $data = $classObj->$method($params);
    exit($data);
}catch (\Exception $e){
    Header("HTTP/1.0 404 Not Found");
}

注意使用的apche或者nginx要支持pathinfo模式。
(其他:对数据库的封装使用的是Medoo,这个类非常小,就20KB左右,使用起来也很方便。)

猜你喜欢

转载自blog.csdn.net/qq_32080545/article/details/81012972