# 微信小程序商城构建全栈应用(一)
此项目是使用TP5编写服务端接口及微信支付登陆等处理。这里主要介绍了项目的环境,工具及准备工作,以及TP5中的模块,路由与请求参数的获取。
# 环境
Web框架:ThinkPHP5.024 基础语言、环境:PHP 5.6,MySQL,Apache,PHPEnv 客户端:小程序 开发工具:PHPStorm,微信Web开发者工具(VC Code),PostMan(Fiddler),Navicat
# TP5层次结构

TP5自带的Web Server:
public目录下输入php -v localhost:8080 router.php即可
# TP5基本命令
安装thinkphp
composer create-project topthink/think [项目名称]1如果不写版本号则默认为最新版本
创建分组(模块目录)
php think build --module 分组名称1创建控制器
php think make:controller 模块名/控制器名1其中控制器名称首字母必须大写
创建模型
php think make:model 【模块名】/模型名 模型名为表名相当1模型名首字母大写
创建验证器
php think make:validate 模块/验证器名称1创建中间件
php think make:middleware 中间件的名称1
# PHPStorm关联xedebug
1.首先安装xedebug ,将xdebug.dll文件让在php/etc文件夹中,同时修改php.ini文件,在PHPEnv集成环境中已经自带xdebug,只需要将phpdtorm 与其关联即可。
2.首先点击phpstorm右上角的小三角图标

点击Edit Configurations,出现下图

点击左上角的+号,之后点击PHP Web Page


点击Server旁边的..,进入配置项

在此界面设置服务器的名称和主机地址,设置完成后点击apply和ok,之后进入如下界面:

在这里我们可以设置显示的名称和开始的url地址,如之前设置的主机为localhost,此处则要设置项目所在地址 ,如果项目文件为htdocs/tp,则url需要设置为tp/public/index.php。
# TP5中的模块,路由与请求参数
使用以下命令创建模块
php think build --module sample
也可以设置自动创建命名空间

TP5的URL路径格式 PATH_INFO模式 http://ServerName/index.php/module/controller/action/[param/value...] http://localhost/zerg/public/index.php/index/index/index
URl不区分大小写(可配置,应用目录下的config.php)
- 兼容模式 http://ServerName/index.php?s=module/controller/action/p/v...
- 缺点
- 太长
- 不够灵活
- URL路径暴露除了服务器文件结构
- 不能很好的支持URL语义化(最大的缺陷)
# URL访问模式
PATH_INFO,混合模式(默认,不同方法使用不同的访问模式,config文件配置) ,强制使用路由模式
我们可以在config.php文件中进行设置

路由模式: 动态配置路由(其他访问模式会失效,在 route.php配置
如我们在sample/test.php文件中编写一下代码
public function hello()
{
return 'hello';
}
2
3
4
我们可以通过正常路由模式进行访问

当在应用目录下的route.php文件中进行以下配置,则无法通过正常路由模式进行访问、

动态注册路由
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)')
请求类型: PUT , GET, POST, DELETE以及*

# 请求参数的获取
TP5中获取请求的参数有以下几种方法
在方法中定义相关变量名进行获取
// route.php Route::post('hello/:id','sample/Test/hello'); // Test.php public function hello($id,$name,$age) { echo $id; echo ':'; echo $name; echo ':'; echo $age; }1
2
3
4
5
6
7
8
9
10
11
当继承了基类控制器

继承了系统的基类控制器的话,系统已经自动完成了请求对象的构造方法注入了,可以直接使用
$this->request调用当前的请求对象。操作方法注入
use think\Request; // 无论是否继承了系统的基类控制器,都可以使用操作方法注入 class Test extends Controller { public function hello(Request $request) { return $request->param('id'); } }1
2
3
4
5
6
7
8
9通过门面静态调用(低版本TP无法使用此方法)
use think/facade/Request; class Test extends Controller { public function hello() { return Request::param('id'); } }1
2
3
4
5
6
7
8助手函数
input()或者request()->param()调用
隐藏入口文件: 在应用入口文件同级目录.htaccess文件 进行如下修改即可

# 业务需求
