# 微信小程序商城构建全栈应用(一)

此项目是使用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基本命令

  1. 安装thinkphp

    composer create-project topthink/think [项目名称] 
    
    1

    如果不写版本号则默认为最新版本

  2. 创建分组(模块目录)

    php think build --module 分组名称 
    
    1
  3. 创建控制器

    php think make:controller 模块名/控制器名   
    
    1

    其中控制器名称首字母必须大写

  4. 创建模型

    php think make:model 【模块名】/模型名 模型名为表名相当 
    
    1

    模型名首字母大写

  5. 创建验证器

    php think make:validate 模块/验证器名称 
    
    1
  6. 创建中间件

    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
1

也可以设置自动创建命名空间

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)

  1. 兼容模式 http://ServerName/index.php?s=module/controller/action/p/v...
  2. 缺点
  3. 太长
  4. 不够灵活
  5. URL路径暴露除了服务器文件结构
  6. 不能很好的支持URL语义化(最大的缺陷)

# URL访问模式

PATH_INFO,混合模式(默认,不同方法使用不同的访问模式,config文件配置) ,强制使用路由模式

我们可以在config.php文件中进行设置

路由模式: 动态配置路由(其他访问模式会失效,在 route.php配置

如我们在sample/test.php文件中编写一下代码

public function hello()
{
	return 'hello';
}
1
2
3
4

我们可以通过正常路由模式进行访问

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

动态注册路由

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)')
1

请求类型: PUT , GET, POST, DELETE以及*

# 请求参数的获取

TP5中获取请求的参数有以下几种方法

  1. 在方法中定义相关变量名进行获取

    // 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

  2. 当继承了基类控制器

    继承了系统的基类控制器的话,系统已经自动完成了请求对象的构造方法注入了,可以直接使用$this->request调用当前的请求对象。

  3. 操作方法注入

    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
  4. 通过门面静态调用(低版本TP无法使用此方法)

    use think/facade/Request;
    class Test extends Controller
    {
        public function hello()
        {
            return Request::param('id');
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
  5. 助手函数input()或者request()->param()调用

隐藏入口文件: 在应用入口文件同级目录.htaccess文件 进行如下修改即可

# 业务需求