# 目錄結構介紹
```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延時隊列
- 異步任務
- 協程任務
- 定時任務