🐘 PHP 学习路线
90 个互动教程
PHP 入门 — 服务器端脚本语言
了解 PHP:嵌入 HTML 的后端语言,全球 77% 网站使用
PHP 数组操作
PHP 万能数组:索引数组 + 关联数组,map/filter/sort
PHP 文件操作
学习文件读写
PHP JSON 处理
json_encode/json_decode 序列化
PHP Composer — 依赖管理
PHP 的包管理器:安装第三方库、自动加载
PHP 字符串处理
PHP 字符串声明、拼接(.)、查找替换、格式化
PHP 循环结构
学习循环
PHP 表单处理
用 $_GET 和 $_POST 接收用户提交的数据,安全清洗
PHP 面向对象 — 类与对象
PHP 类定义、构造函数属性、访问控制
PHP PDO — 数据库安全操作
PDO + Prepared Statements:防 SQL 注入的标准方式
PHP cURL — HTTP 客户端
cURL 发送 GET/POST、设置请求头、处理响应
PHP 过滤器 — 数据验证
filter_var/filter_input 安全验证用户输入
PHP 命名空间
namespace + use 组织代码
PHP Trait 代码复用
trait 解决单继承限制
PHP 继承与抽象类
学习PHP中PHP 继承与抽象类 — PHP教程的详细用法和最佳实践
PHP 异常处理
try/catch/finally + 自定义 Exception
PHP cURL实战
学习PHP中PHP cURL实战 — PHP教程的详细用法和最佳实践
PHP Session 会话管理
session_start/$_SESSION/会话安全
PHP 文件上传
$_FILES/move_uploaded_file/文件验证
PHP 发送邮件
mail() 函数/SMTP/PHPMailer
PHP OOP 进阶
抽象类/接口/trait/魔术方法/类型声明
PHP 数据库操作总结
PDO/MySQLi对比/ORM选择/迁移
PHP 开发环境搭建
PHP开发环境搭建:XAMPP/WAMP安装、phpinfo测试、第一个PHP文件、echo输出
PHP Laravel Eloquent ORM
Laravel Eloquent:Model定义、查询作用域Scope、访问器/修改器Accessor/Mutator、关联关系(hasOne/hasMany/belongsTo/belongsToMany)、渴求式加载with()防N+1
PHP 安全 — 输入过滤与输出转义
PHP安全:filter_var/filter_input过滤输入、htmlspecialchars防XSS、PDO预处理防SQL注入、CSRF Token验证、密码哈希password_hash/verify
PHP Session 安全管理
PHP Session安全:session_regenerate_id()防固定、HttpOnly/Secure/SameSite Cookie、Session存储位置(Redis/DB替代文件)、session.gc垃圾回收
PHP OPcache 性能优化
OPcache:opcache.enable预编译缓存、opcache_invalidate清除缓存、opcache.max_accelerated_files配置、与APC对比、OPcache Status监控
PHP PSR-15 中间件模式
PHP中间件模式:PSR-15规范、RequestHandlerInterface/MiddlewareInterface、洋葱模型(请求→中间件1→中间件2→核心→响应)、Slim/Laravel中间件实现
PHP PHPUnit 测试
PHPUnit测试框架:TestCase类、assertEquals断言、@dataProvider数据提供者、MockObject模拟对象、Code Coverage代码覆盖率、CI集成
Laravel Artisan 命令行
Laravel Artisan控制台:php artisan make:生成器命令、自定义Artisan命令($signature/$description/handle)、命令参数与选项、定时任务Schedule(withoutOverlapping/onOneServer)
PHP MVC 框架原理
PHP MVC架构:Model(数据/业务逻辑)、View(模板/呈现)、Controller(请求处理/调度)、Front Controller前端控制器模式(index.php入口)、自己实现简易MVC框架
PHP WebSocket 实时通信
PHP WebSocket:Ratchet库(ReactPHP事件循环)、WebSocket协议(握手Upgrade/帧格式)、实时聊天/通知推送、与Server-Sent Events(SSE)对比
PHP 变量与数据类型
PHP变量($前缀)、数据类型(string/int/float/bool/array/object/NULL)、类型转换、var_dump调试、isset/empty/unset
PHP 依赖注入容器
PHP DI容器:PSR-11 ContainerInterface规范、依赖注入(构造器注入/方法注入/属性注入)、自动装配Autowiring、服务提供者Service Provider、PHP-DI/Laravel Container实现
PHP Guzzle HTTP客户端
Guzzle HTTP客户端:异步请求(Pool批量并发)、Middleware中间件(重试/日志/认证)、PSR-7 Request/Response接口、PSR-18 HTTP Client接口、与cURL原生对比
PHP PDO 进阶
PHP PDO进阶:PDO::ATTR_ERRMODE异常模式、prepare预处理防SQL注入原理、bindParam vs bindValue、PDO::lastInsertId获取自增ID、事务嵌套(不支持/需手动savepoint)、PDOStatement::fetch多种获取模式
PHP Redis 集成
PHP Redis使用:phpredis扩展/ Predis纯PHP客户端、缓存读写/过期时间、session.save_handler=redis、Redis Pipeline批量操作减少RTT、Pub/Sub发布订阅
PHP Trait 特性深入
PHP Trait深入:trait代码复用机制(横向复用/解决单继承限制)、trait冲突解决(insteadof/as别名)、trait组合trait、trait中的抽象方法、trait静态属性/方法、trait vs interface vs abstract
PHP 魔术方法大全
PHP魔术方法:__get/__set/__isset/__unset(属性重载)、__call/__callStatic(方法重载)、__toString/__invoke/__sleep/__wakeup/__serialize/__unserialize、__debugInfo控制var_dump输出
PHP XML 与 JSON 数据处理
PHP XML/JSON:SimpleXML解析(simplexml_load_string->xpath查询)、json_encode(JSON_UNESCAPED_UNICODE/JSON_PRETTY_PRINT)/json_decode、SOAP WebService调用SoapClient
PHP DateTime 日期时间
PHP DateTime操作:DateTime/DateTimeImmutable(不可变/推荐)、DateTimeZone时区、DateInterval时间间隔(add/sub)、DatePeriod日期周期迭代、format格式化字符大全、Carbon库增强
PHP 后期静态绑定
PHP后期静态绑定Late Static Binding:static::关键字(运行时解析调用类/区别于self::编译时绑定)、forward_static_call转发静态调用、继承中static::的多态性、与self::对比演示
PHP Generator 深入
PHP Generator深入(生成器/协程基础):yield关键字、yield from委托生成器、Generator::send()向生成器注入值、Generator::throw()注入异常、生成器实现协程式异步(非阻塞IO基础)
PHP OpenSSL 加密
PHP OpenSSL扩展:openssl_encrypt/decrypt对称加密(AES-256-CBC/AES-256-GCM)、openssl_public_encrypt/private_decrypt非对称加密、openssl_sign/verify数字签名、openssl_random_pseudo_bytes安全随机数
PHP SPL 标准库
SPL(Standard PHP Library)数据结构:SplQueue队列/SplStack堆栈/SplFixedArray固定数组(比普通数组省内存)、SplObjectStorage对象存储(存储对象为键/弱引用)、SplPriorityQueue优先级队列、DirectoryIterator/RecursiveDirectoryIterator目录遍历
PHP final 关键字
PHP final关键字:final类(禁止继承/安全/不可变类型)、final方法(禁止子类重写/防止修改关键行为)、与private构造器配合(静态工厂模式/工具类不可实例化)、final vs abstract对比
PHP CSRF 防御实现
PHP CSRF防御:生成csrf token(bin2hex(random_bytes(32)))、存储到Session+嵌入表单隐藏域、验证提交token_hash_equals时序安全比较、一次性token每请求刷新、AJAX请求token(Custom Header X-CSRF-Token)、Laravel内置@csrf
PHP 构造器与析构器深入
PHP构造析构深入:PHP 8构造器属性提升__construct(private $name)同时声明+赋值、构造器参数默认值/nullable、Final构造器、__destruct析构函数(请求结束/对象unset时调用/顺序不确定不用于关键清理)、PHP 8.1 new in initializers新特性
PHP 接口与抽象类
PHP接口vs抽象类:interface定义契约(public方法签名/常量)、implements实现多个接口(多接口继承)、abstract class抽象类(部分实现/共享代码/不可实例化)、Interface vs Abstract 选择标准(is-a关系→abstract/can-do能力→interface)
PHP Reflection 反射
PHP反射API:ReflectionClass获取类信息(方法/属性/常量/注释/接口/trait父类)、ReflectionMethod获取方法信息/调用invoke、ReflectionFunction函数反射、反射在框架中的应用(依赖注入自动解析/路由注解读取/ ORM实体映射/文档生成)、性能开销(生产缓存)
PHP 密码哈希最佳实践
PHP密码处理最佳实践:password_hash(password,PASSWORD_BCRYPT/PASSWORD_ARGON2I/PASSWORD_ARGON2ID/PASSWORD_DEFAULT)哈希、password_verify验证、password_needs_rehash检测是否需要重新哈希(算法变更/参数升级)、password_get_info获取哈希信息、不要用md5/sh
PHP Trait 冲突深入
PHP Trait冲突解决深入:同名方法冲突→insteadof排除/ as重命名+修改可见性(private/protected/public)、trait中使用抽象方法abstract function、trait组合trait(trait A {use B,C;})、静态方法在trait中、属性冲突
PHP Fileinfo 文件类型检测
PHP Fileinfo扩展(finfo_open/finfo_file/finfo_buffer检测文件MIME类型/不依赖扩展名/读取文件魔数magic bytes):FILEINFO_MIME_TYPE/FILEINFO_MIME、php.ini中的magic_database、检测上传文件真实类型防伪造扩展名攻击
PHP 自定义序列化
PHP Serializable接口和__serialize/__unserialize(PHP 7.4+/替代Serializable):__serialize返回数组→__unserialize接收数组恢复对象、与__sleep/__wakeup的区别(__sleep返回属性名数组→ser/ unser自动处理/__serialize更灵活),序列化安全(不要unserialize用户输入/可
PHP-FPM 深入
PHP-FPM(FastCGI Process Manager深入):www.conf配置(pm=dynamic/static/ondemand、pm.max_children/pm.start_servers/pm.min_spare_servers/pm.max_spare_servers/pm.max_requests)、慢日志slowlog、状态页pm.status_path、与Nginx
PHP CS Fixer 代码风格
PHP-CS-Fixer代码风格自动修复:.php-cs-fixer.dist.php配置、Rules规则(@PSR12/@Symfony/@PhpCsFixer)、dry-run模式预览修复、与phpcs/phpcbf/Laravel Pint对比
PHP 垃圾回收 GC
PHP垃圾回收机制:引用计数Reference Counting(每个zval有refcount/is_ref)、循环引用Cycle导致内存泄漏→PHP 5.3+引入GC(gc_collect_cycles/gc_enable/gc_disable/gc_status)、Xdebug检测循环引用/weakref/WeakMap弱引用(PHP 8.0+)辅助GC
PHP Xdebug 调试深入
Xdebug PHP调试器深入:xdebug.mode多种模式组合、断点调试VS Code+PHP Debug插件/xdebug.start_with_request=yes、性能分析cachegrind文件/QCacheGrind/KCacheGrind/Webgrind查看
PHP Session 与 Cookie
PHP会话管理:session_start()/$_SESSION、setcookie()设置Cookie、session与cookie的区别、登录状态保持、购物车实现思路
PHP 文件操作
PHP文件读写:fopen/fread/fwrite/fclose、file_get_contents/file_put_contents、file_exists/is_file、目录操作(mkdir/rmdir/scandir)
PHP 数据库操作 MySQLi/PDO
PHP连接MySQL:mysqli和PDO两种方式、prepare预处理防SQL注入、SELECT/INSERT/UPDATE/DELETE操作、fetch/fetchAll获取结果
PHP JSON 与 API 开发
PHP与JSON:json_encode/json_decode、header设置响应类型、构建RESTful API、接收JSON请求体、跨域CORS处理
PHP 图片处理 GD库
PHP GD库处理图片:创建画布、绘制图形/文字、图片水印、缩略图生成、验证码图片制作
PHP 发送邮件 mail()与PHPMailer
PHP发送邮件:mail()函数基础使用、PHPMailer库(SMTP发送、附件、HTML邮件)、常见邮件发送问题排查
PHP 8 匹配表达式
学习 PHP 8 中强大的 match 表达式,替代传统 switch 实现更简洁的条件匹配。
PHP 命名空间与自动加载
PHP命名空间:namespace声明、use导入、别名、PSR-4自动加载规范、Composer autoload配置、命名空间与文件目录对应
PHP 枚举类型
深入理解 PHP 8.1 的枚举特性,定义一组命名常量,提升代码可读性和安全性。
PHP Laravel 框架入门
Laravel简介(最流行的PHP框架)、安装、Artisan命令行、路由routes/web.php、Blade模板引擎、Eloquent ORM模型、Migrations数据库迁移
PHP 命名参数
掌握 PHP 8 命名参数特性,跳过可选参数,提高函数调用可读性。
PHP 纤维 Fiber
探索 PHP 8.1 的 Fiber 实现,理解协程并发执行机制。
PHP 属性 Attribute
学习 PHP 8 属性,为类、方法、属性添加元数据,实现声明式编程。
PHP 弱引用
理解 PHP 弱引用如何允许引用对象但不阻止垃圾回收,优化内存管理。
PHP 预加载
了解 PHP 8 预加载机制,在服务器启动时将代码加载到内存,提升性能。
PHP JIT 编译
探索 PHP 8 的 JIT(即时编译)如何加速 CPU 密集型任务。
PHP Swoole 扩展
学习 Swoole 实现异步、协程和高性能网络通信,构建实时应用。
PHP 单元测试
掌握 PHPUnit 单元测试框架,编写测试用例确保代码质量。
PHP 枚举
学习PHP 8.1引入的原生枚举类型,包括纯枚举、回退枚举和枚举方法。
PHP 枚举(Enum)
掌握PHP 8.1枚举类型,创建强类型常量集合。
PHP 8 匹配表达式
学习 PHP 8 中更安全、更简洁的 match 表达式,替代传统的 switch 语句。
PHP 纤维(Fiber)
探索PHP 8.1 Fiber实现轻量级协作式多任务。
深入SPL:用IteratorAggregate构建可遍历对象图谱
超越foreach基础,学习如何通过实现IteratorAggregate接口让自定义类像数组一样遍历,并结合Generator玩转惰性迭代器。
Generator委托:使用yield from串联异步数据流
掌握yield from语法,将多个Generator或Traversable对象拼接成一个连续的数据管道,适用于分页API请求或日志流处理。
FFI实战:在PHP中直接调用C标准库函数
利用PHP 7.4+的Foreign Function Interface,绕过扩展直接加载并调用C语言动态库,提升加密、数学运算等场景性能。
弱引用与WeakMap:构建无内存泄漏的缓存系统
利用PHP 8.0的WeakReference和WeakMap,管理对象引用关系,避免传统静态缓存导致的内存泄漏,尤其适用于ORM和事件系统。
属性驱动的AST路由:用PHP 8 Attribute定义运行时元数据
深入PHP 8属性语法,结合反射和抽象语法树解析,构建一个自动发现路由的微框架,替代传统注释或配置文件。
枚举类型高级用法:联合方法与状态机实现
利用PHP 8.1枚举支持方法和接口,设计有限状态机模型,替代冗长的if-else判断,提升代码可读性与扩展性。
Fiber协程实战:并发HTTP请求的零依赖方案
使用PHP 8.1 Fiber实现用户态协程,在不安装Swoole等扩展的情况下,发起并发CURL请求并收集结果。
match表达式深度模式匹配:替代switch的数据分类艺术
掌握PHP 8 match表达式的严格比较与多条件匹配,用于处理复杂的数据类型分类和验证,包括联合类型和模式守卫。
只读类与不可变数据传输对象:构建线程安全的值对象
深入PHP 8.2只读类的特性,设计完全不可变的数据传输对象(DTO),确保对象创建后状态永不改变,适用于事件溯源和缓存。
Pest架构测试:用代码约束项目依赖与命名规范
利用Pest测试框架的arch()方法,编写自动化测试确保代码架构符合预定规则,例如禁止特定命名空间之间的耦合。