PHP 全栈工程师指南
由 学院君 创建于5年前, 最后更新于 4年前
版本号 #162
58122 views
16 likes
11 collects
课程简介
通过本系列教程的学习,可以帮助你完全掌握 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 模板
视图入门:基本使用与数据传递
Blade 入门篇:数据渲染 & 控制结构
Blade 进阶篇:模板继承 & 组件引入
Blade 高级篇:View Composer & 自定义指令
前端入门
在 Laravel 项目中使用 Bootstrap 框架
在 Laravel 中编写 Sass 入门教程
在 Laravel 中编写第一个 Vue 组件
通过 Laravel Mix 编译前端资源
基于 Livewire 通过 PHP 编写视图组件
处理用户请求
通过 Request 对象实例获取用户请求数据
通过 Laravel + Vue 组件实现文件异步上传
在 Laravel 控制器中进行表单请求验证
在单独的表单请求类中实现字段验证逻辑
通过匿名函数和验证规则类自定义字段验证规则
Artisan & Tinker
编写第一个 Artisan 命令
编写高级的 Artisan 命令
通过 Tinker 实现 Laravel 命令行交互式 Shell
数据库和 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.js Devtools 作为调试工具
列表渲染的基本使用和动态调整
事件监听和异步处理实现示例
属性和类名绑定的使用示例
通过计算属性动态设置属性值
组件开发
快速入门:基本使用和组件嵌套
组件通信:父子组件之间的数据传递和事件监听
组件插槽:父子组件之间的内容分发和插槽作用域
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 表单页面组件实现,后端除了基本的表单验证,数据库存储之外,还要实现事件监听和异步队列处理邮件发送功能。
实战项目
博客
基于原生 PHP 构建
Laravel 博客入门项目
微信公众号、小程序开发
如何基于 Laravel 开发微信生态应用
单页面应用(SPA)
基于 Laravel + Vue 构建单页面应用
基于 Laravel + Vue.js 构建 LBS 项目
在线商城
基于 Laravel 构建完整的在线商城系统
直播网站
基于 Laravel 构建音视频直播应用
目前,本系列视频+图文教程正在更新中,对应的视频微享版(有1分钟时长限制,非完整版)会更新到学院君微信视频号,你可以扫码关注学院君视频号观看:
图文教程则会更新到学院君微信公众号: