# 目录结构介绍
```shell
├── app/ ------ 应用代码目录
│ ├── Annotation/ ------- 定义注解相关
│ ├── Aspect/ ------- AOP 切面
│ ├── Bean/ ------- 一些具有独立功能的class bean
│ ├── Console/ ------ 命令行代码目录
│ │ ├── Command/
│ ├── Exception/ ------ 定义异常类目录
│ │ └── Handler/ ------ 定义异常处理类目录
│ ├── Http/ ------ HTTP 代码目录
│ │ ├── Controller/
│ │ └── Middleware/
│ ├── Helper/
│ │ └── Functions.php
│ ├── Listener/ ------ 事件监听器目录
│ ├── Model/ ------ 模型、逻辑等代码目录(这些层并不限定,根据需要使用)
│ │ ├── Dao/
│ │ ├── Data/
│ │ ├── Logic/
│ │ └── Entity/
│ ├── Rpc/ ------ RPC 代码目录
│ │ └── Service/
│ │ └── Middleware/
│ ├── WebSocket/ ------ WebSocket 代码目录
│ │ ├── Chat/
│ │ ├── Middleware/
│ │ └── ChatModule.php
│ ├── Application.php -------- 应用类文件继承自swoft核心
│ ├── AutoLoader.php -------- 项目扫描等信息(应用本身也算是一个组件)
│ └── bean.php
├── bin/
│ ├── bootstrap.php
│ └── swoft ------ swoft 入口文件
├── config/ ------ 应用配置目录
│ ├── base.php --- 基础配置
│ └── db.php
├── public/ ------ WEB可访问目录
├── resource/ ------ 应用相关资源目录
│ ├── language/ ------ 语言资源目录
│ └── view/ ------ 视图资源目录
├── runtime/ ------ 临时文件目录(日志、上传文件、文件缓存等)
├── test/ ------ 单元测试代码目录
│ └── bootstrap.php
├── composer.json
├── composer.lock
├── phar.build.inc
└── phpunit.xml.dist
```
- 第一章:基础知识
- 课程简介
- PHP-FPM过渡常驻内存
- 进程
- 实战:实现Master-Worker
- 线程
- 实战:CC攻击器
- 协程
- 实战:实现waitGroup功能
- 进程、线程、协程的区别
- 第二章:初识Swoft2.0
- Swoft介绍
- Swoft环境安装
- gcc升级
- 安装Swoft框架
- 目录结构介绍
- SwoftCli工具
- Swoft配置
- 第三章:Swoft2.0核心
- 上下文
- 常驻内存没有上下文隔离
- 实战:手写swoole框架上下文管理
- Bean容器
- 实战:根据容器原理实现容器
- 实战:通过容器实现依赖注入
- Bean容器定义与使用
- 配置文件定义Bean
- 容器类型
- 面向接口的容器
- 注解
- 实战:实现注解
- 自定义Swoft注解类
- 事件
- 连接池
- 实战:Swoole实现连接池
- 第四章:Http服务器
- Http Server生命周期
- Http Server配置
- 控制器
- 路由
- 请求对象Request
- 响应对象Response
- Http异常处理
- 中间件
- 实战:中间件实现JWT登陆授权
- 第五章:验证器
- 内置验证类型
- 验证器的使用
- 自定义验证器
- 第六章:数据库操作
- 连接数据库
- 实体模型
- 模型事件
- 查询器
- 事务处理
- 连接池配置
- 读写分离
- 多数据库切换
- Models分层结构
- 实战:实现用户CURD API
- 第七章:Redis
- 连接redis和使用
- Redis连接池
- Redis集群配置(单机版)
- Redis集群配置(多服务器)
- Redis连接集群
- Redis实战:实现延时任务
- 第八章:AOP编程
- AOP概念
- AOP实现原理
- 实战实现AOP:静态代理
- 实战实现AOP:动态代理
- 切面注解介绍
- PointExecution切面
- PointBean切面
- PointAnnotation切面
- 实战:使用AOP实现日志记录
- 第九章:任务处理
- 进程使用
- 进程池使用
- 实战:进程消费队列
- 实战:进程实现RabbitMQ延时队列
- 异步任务
- 协程任务
- 定时任务