决定写这个 微信小程序 + thinkphp5 商城
为期末的php做准备
这里使用的是最新版本的thinphp 6.0
这里为学习使用thinkphp6
调试修改
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─view 视图目录
│ ├─ ... 更多类库目录
│ │
│ ├─command.php 命令行定义文件
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─log.php 日志配置
│ ├─route.php 路由和URL配置
│ ├─session.php Session配置
│ ├─template.php 模板引擎配置
│ └─trace.php Trace配置
│
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
复制
多应用模式
如果你需要一个多应用的项目架构,目录结构可以参考下面的结构进行调整(关于配置文件的详细结构参考后面章节)。
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─app_name 应用目录
│ │ ├─common.php 函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ │
│ ├─command.php 命令行定义文件
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 应用配置目录
│ ├─app_name 应用配置目录
│ │ ├─database.php 数据库配置
│ │ ├─cache 缓存配置
│ │ └─ ...
│ │
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─log.php 日志配置
│ ├─route.php 路由和URL配置
│ ├─session.php Session配置
│ ├─template.php 模板引擎配置
│ └─trace.php Trace配置
│
├─route 路由定义目录
│ ├─app_name 应用路由目录
│ │ ├─route.php 路由定义文件
│ │ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
默认的入口文件在
public/index.php
使用自动的多应用部署
修改入口文件为下
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
namespace think;
require __DIR__ . '/../vendor/autoload.php';
// 执行HTTP应用并响应
$http = (new App())->http;
$response = $http->name("index")->run();
$response->send();
$http->end($response);
此时目录结构如下
编写控制器
此时访问
http://localhost:8082/index.php/
可以看到访问到应用为index的应用
http://serverName/index.php/应用/控制器/操作/参数/值…
通过对类的依赖进行自动注入
对象依赖通过依赖注入生成
使用助手函数绑定
user = $user;
}
public function Index(){
$app = app();
isset($app->User);
$app->user = User::class;
$user = $app -> user;
return "ming" . var_dump($cache);
}
}
这里使用app函数对对象实例进行注册。。
执行框架依赖的组件需要的基础服务
服务会继承thinkphp的think\Service命名空间下的类
使用命令生成 php think make:service FileSystemService 生成一个系统服务
该系统服务会继承系统的think\Service类
生成两个空方法 register 和 boot
register 方法,服务绑定到容器
使用命令生成系统服务
php think make:service FileSystemService
可以发现注册到app\service命名空间 使用think\Service
这里是门面
门面为容器中的动态的类,提供静态调用接口。用来进行可测试和扩展。。
此时会产生一个hello类
调用hello类的方法
正常的调用
user = $user;
}
public function Index(){
$test = new \app\common\Test();
echo $test ->hello('thinkphp');
return "ming";
}
}
此时使用代理类
user = $user;
}
public function Index(){
echo \app\common\facade\Test::hello("ming");
return "ming";
}
}
即无需实例化,直接使用工厂模式,进行生成实例化对象
无需实例化就可以调用
➜ untitled11 php think make:middleware Check
Middleware:app\middleware\Check created successfully.
➜ untitled11
使用命令行生成中间件
此时的目录结构
可以看到生成了Check中间件
param('name') == 'think'){
// 请求转发到index页面的think
return redirect('index/think');
}
// 继续转发下一个中间件
return $next($request);
}
}
注册中间件
对路由中间件进行注册
Route::rule('hello/:name','hello')
->middleware(\app\middleware\Auth::class);
可以进行注册
支持订阅者和发布者模式
事件的存在的意义是对修改关闭,对增加开发
减少对代码的入侵
所有的事件通过 think\facade\Event 类进行调用
即观察者模式
使用助手函数 或者使用Event::trigger注册事件
使用事件类
输入命令 生成事件类
php think make:event UserLogin