主要是一个小项目,没必要使用框架,就简单处理了使用一个文件类调用多个方法,避免重复创建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左右,使用起来也很方便。)