PHP 全栈工程师指南
课程简介
通过本系列教程的学习,可以帮助你完全掌握 Laravel + Vue.js 的开发,成为一名合格的 PHP 全栈开发工程师。
以下教程图文版会免费提供,以便让更多具有一定自学能力的人可以快速掌握全栈开发技能,这也是学院君坚持更新免费教程的原因 —— 让更多有自学能力的人以更低成本、更高效率掌握编程技能。
本系列教程已经开始更新,你可以关注学院君网站及时了解更新进度,也可以选择升级为学院君订阅用户对学院君进行支持(已订阅用户忽略,含高清视频):
本系列教程假设你已经具备基本的 HTML + CSS + JavaScript 知识。参考教程:JavaScript 权威指南。
开篇
PHP 入门
环境搭建
- PHP/Laravel 本地开发环境搭建:Mac 篇
- PHP/Laravel 本地开发环境搭建:Windows 篇
- 增补篇:Windows PHP 本地开发三步曲(一)—— 基于 WSL 在 Windows 中搭建 PHP 本地开发环境
- 增补篇:Windows PHP 本地开发三步曲(二)—— 在 WSL2 虚拟机中基于 Docker 编排 LNMP 运行环境
- 选择一款趁手的 PHP 代码编辑器
- 增补篇:Windows PHP 本地开发三步曲(三)—— PhpStorm 集成 WSL 内的 PHP 进行单元测试和代码调试
- 增补篇:使用 Visual Studio Code 进行 PHP 开发
- 编写第一个 PHP 程序
- 在 HTML 中嵌入 PHP 代码
章节作业:基于 PHP 实现一个博客首页页面(PHP + HTML + CSS)
基本语法
章节作业1:基于上述基本语法重构博客首页页面(PHP + HTML + CSS)
章节作业2:基于 PHP 实现在线计算器应用(PHP + HTML + CSS + JavaScript)
面向对象
- 类与对象、访问控制
- 继承、封装与多态
- 抽象类与接口(上)
- 抽象类与接口(下)
- 水平扩展 PHP 类功能(上):对象组合
- 水平扩展 PHP 类功能(下):Trait
- 静态属性和方法
- 魔术方法、序列化与对象复制
- 错误和异常处理(上)
- 错误和异常处理(下)
章节作业:基于面向对象编程重构博客系统,包含首页、列表页、详情页,要求引入依赖注入模式、单例模式、适配器模式和工厂模式。目前数据库基于数组驱动模拟实现。
扩展阅读:PHP 设计模式系列
数据库操作
- MySQL 入门、安装和客户端管理工具
- MySQL 基本使用(上):DDL 和 DML 语句
- MySQL 基本使用(下):DCL 和聚合函数
- 通过 PHP Mysqli 扩展与数据库交互
- 通过 PDO 扩展与 MySQL 数据库交互(上):基本使用
- 通过 PDO 扩展与 MySQL 数据库交互(下):增删改查实现和数据库事务
章节作业:为博客系统添加数据库驱动,并基于 MySQL 数据库作为博客应用数据源实现增删改查功能。
HTTP 编程
- 基于 Nginx + PHP-FPM 作为 HTTP 服务器
- 获取用户请求数据及文件上传处理
- 设置 HTTP 响应和文件下载
- 在 PHP 中使用和管理 Cookie
- 在 PHP 中使用和管理 Session 并实现简单的用户登录功能
章节作业1:通过 Request、Response 类封装 HTTP 请求和响应,实现在 PHP 原生代码中以面向对象方式进行 HTTP 编程(基于之前的博客系统)
章节作业2:实现一个简单的 HTTP 路由器注册用户请求路由,并通过路由器分发用户请求(基于之前的博客系统)
章节作业3:扩展用户登录功能,将数组模拟数据替换为通过读取数据库数据进行认证(基于之前的博客系统)
额外要求:将上述 Request、Response、Router、Auth 对象示例统一通过 IoC 容器管理,并通过门面模式(Facade)提供它们的静态代理
项目实战
- 命名空间与类自动加载实现
- 封装 HTTP 请求和响应类
- 实现 HTTP 路由器
- 实现 HTTP 控制器
- 视图模板引擎的解析和渲染
- 实现 ORM 模型类
- 引入 Laravel Mix 管理前端资源
- 将博客主题替换成 Clean Blog
- 通过 Ajax 提交表单请求数据
- 表单数据验证与请求处理
- 引入 SB Admin 2 作为后台管理系统主题
- 为后台管理系统添加用户认证功能
- 为管理后台专辑、文章、消息模块添加增删改查功能
Laravel 入门
路由&控制器
- 路由入门:路由定义、参数传递及路由命名
- 路由分组:中间件、路由前缀、子域名及命名空间
- 控制器:MVC模式、控制器编写、依赖注入、资源控制器
- 路由进阶:模型绑定、兜底路由、频率限制和路由缓存
- 表单请求方法伪造 & 跨站请求伪造(CSRF)攻击保护
视图 & Blade 模板
前端入门
- 在 Laravel 项目中使用 Bootstrap 框架
- 在 Laravel 中编写 Sass 入门教程
- 在 Laravel 中编写第一个 Vue 组件
- 通过 Laravel Mix 编译前端资源
- 基于 Livewire 通过 PHP 编写视图组件
处理用户请求
- 通过 Request 对象实例获取用户请求数据
- 通过 Laravel + Vue 组件实现文件异步上传
- 在 Laravel 控制器中进行表单请求验证
- 在单独的表单请求类中实现字段验证逻辑
- 通过匿名函数和验证规则类自定义字段验证规则
Artisan & Tinker
数据库和 Eloquent
- 连接配置和读写分离
- 通过迁移创建数据表
- 通过填充器快速填充数据
- 查询构建器入门:数据库增删改查
- 查询构建器进阶:构建复杂的查询语句
- Eloquent 模型入门:实现增删改查操作
- Eloquent 模型进阶:批量赋值与软删除
- Eloquent 模型进阶:访问器与修改器
- Eloquent 模型进阶:查询作用域(全局、局部、动态)
- Eloquent 模型进阶:模型事件及监听方式
- Eloquent 模型进阶:关联关系(上)
- Eloquent 模型进阶:关联关系(中)
- Eloquent 模型进阶:关联关系(下)
- 结合 Bootstrap + Vue 组件实现异步分页
项目实战
- 基于 Laravel + Vue 构建一个类似 Twitter 的 Web 应用
- API 接口开发:基于 Laravel 构建 & 测试 RESTful API
- API 接口开发:结合 Laravel 5.5 和 Vue SPA 基于 jwt-auth 实现 API 认证
- API 接口开发:使用 API Resource 来创建自己的 {JSON:API} 格式 API
工具系列
玩转 PhpStorm
- 一、主题篇:主题切换、自定义和安装第三方主题
- 二、代码导航篇:通过快捷键实现 PHP 代码的全局导航和上下文导航
- 三、插件篇:第三方插件的安装、使用和卸载
- 四、快捷键篇:快捷键预览、切换和自定义
- 五、代码模版篇:灵活使用代码模板功能提高编码效率
- 六、代码重构篇:通过代码重构提高代码复用性
- 七、小技巧篇:一些提高工作效率的小技巧(多处修改、分割窗口、搜索作用域)
- 八、Vim篇:基于 IdeaVim 插件模拟 Vim 编辑器进行编码
- 九、代码调试篇(上):基于 Xdebug 调试 PHP CLI 应用
- 十、代码调试篇(下):基于 Xdebug 调试 PHP Web 应用
- 十一、编码风格篇:使用 PHP CS Fixer 统一团队编码风格
- 十二、单元测试篇:基于 PHPUnit 进行单元测试
Vue 入门
基础语法
组件开发
- 快速入门:基本使用和组件嵌套
- 组件通信:父子组件之间的数据传递和事件监听
- 组件插槽:父子组件之间的内容分发和插槽作用域
- Vue Loader 篇(上):基于 Vue CLI 初始化原型项目
- Vue Loader 篇(下):编写一个单文件 Vue 组件
- 在 Laravel 项目中编写单文件 Vue 组件
- 通过 Axios 发送 Ajax 请求获取接口数据渲染组件
组件实战
- Laravel 组件开发快速入门(上):基于 Inertia + Vue 技术栈编写表单组件
- Laravel 组件开发快速入门(下):基于 Livewire + Blade 技术栈编写表单组件
以下开始介绍如何在 Laravel 8 中基于纯 Vue 框架编写表单组件:
- 前奏篇(一):ES2015 新特性一览
- 前奏篇(二):Tailwind 与 Bootstrap 的区别和使用入门
- 在 Laravel 中基于 Vue + Bootstrap 快速开发表单组件
- 通过 ES6 新语法对 Vue 表单组件进行面向对象重构
- 通过 props 和 Vue 原型实例在不同组件之间共享数据状态
- SOLID 原则在 Vue 组件开发中的应用:将单个表单组件拆分成可复用的子组件组合
- 基于子组件构建列表组件并实现视图模式切换功能
- 通过 Vue 过滤器对模型属性值进行格式化
- 基于 Laravel 8 模型工厂快速生成后端接口测试数据
- 基于 Laravel + Vue 组件实现文章发布、编辑和浏览功能
- 基于 Bootstrap + Vue 框架编写模态框组件并完成文章删除功能
- 为 Vue 模态框组件的打开关闭添加过渡/动画效果
- 基于 Laravel + Vue 实现文件异步上传组件和文章封面图片功能
- 在 Vue 框架中实现图片拖放上传组件
- 基于 Flickity 在 Vue 中实现轮播图组件并设置简单的博客布局
测试驱动开发
注:由于 SPA 中会使用 TDD 模式开发,所以先介绍 Vue 组件单元测试。
- 引入 Vue 测试套件 + Mocha + jsdom + Expect 测试 Vue 组件
- 基于 TDD 模式开发评论组件(上):数据绑定和列表渲染
- 基于 TDD 模式在 Laravel 项目中开发后端评论接口
- 基于 TDD 模式开发评论组件(中):父子组件之间的通信测试
- 基于 TDD 模式开发评论组件(下):Axios 请求后端接口测试
构建单页面应用
- 通过 Vue Router 初始化单页面应用项目骨架
- 页面布局(上):基于 Vue Router 命名路由实现动态路由导航
- 页面布局(下):引入 Tailwind CSS 框架构建博客应用 UI 界面
- Laravel 后端博客文章数据相关 API 接口提供
- 通过后端 API 接口返回数据渲染 Vue 页面组件并实现分页功能
- 引入 Vuex Store 管理 Vue 组件数据状态的更新和获取
- 基于 Laravel + Vue + Vuex 实现博客应用文章发布功能
- 基于 Laravel Sanctum + Vuex + Vue 路由导航守卫实现用户认证
项目作业:自行实现用户反馈表单提交 & 后端处理代码,前端基于 Vue 表单页面组件实现,后端除了基本的表单验证,数据库存储之外,还要实现事件监听和异步队列处理邮件发送功能。
实战项目
博客
微信公众号、小程序开发
单页面应用(SPA)
在线商城
- 基于 Laravel 构建完整的在线商城系统
直播网站
- 基于 Laravel 构建音视频直播应用
目前,本系列视频+图文教程正在更新中,对应的视频微享版(有1分钟时长限制,非完整版)会更新到学院君微信视频号,你可以扫码关注学院君视频号观看:
图文教程则会更新到学院君微信公众号:
27 Comments
完整项目
学院君,教程的作业没有内容啊
催更催更,问一下啊,视频更新到哪儿了
在知识星球里面: https://t.zsxq.com/Un2Jqf6,之前是收费的星球,不能改成免费的,所以把价格调成1块钱了
等 Laravel 8 中文文档更新完了继续
学院君,实战项目怎么没有更新了
年后再说吧 最近没有时间 我只是业务时间维护下这个网站的内容更新