主要是一个小项目,没必要使用框架,就简单处理了使用一个文件类调用多个方法,避免重复创建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中什么是单入口文件?单入口文件的优缺点?
单一入口应用程序的所有http请求都是通过某一个文件(比如index.php)接收并由这个文件转发到功能代码中去。
单一入口应用程序优势:可以对url参数和post进行必要的检查和特殊字符过滤、记录日志、访问统计等等各种可以集中处理的任务,类似如一些权限控制、用户登录方面的判断和操作可以统一处理了。
由于这些工作都被集中到了单入口文件(index.php)来完成,可以减轻我们维护其他功能代码的难度。
比如你访问网站,http://www.aaa.com/index.php
这个index.php就是单入口文件,访问任何页面都是在index.php后面加参数,比如登录页:
http://www.aaa.com/index.php?m=login
优点就是比较方便管理,可以配置一些统一的设置,比如安全性检查,访问统计什么的。
缺点的话,url不好看吧...最好做一下重写
<?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左右,使用起来也很方便。)