跳至主要内容

博文

PHP 5到8的主要特性更新

PHP 5 → 8:主要特性演进 按版本梳理 PHP 从 5.x 到 8.5 的主要语言特性。每个特性都配有可以直接运行的示例,以及它在真实环境里的输出。 5.x 到 8.3 的示例运行在 PHP 8.3.6 上,8.4 和 8.5 的示例运行在从官方源码编译的 PHP 8.5.0 上。输出没有经过修改,只是把文件路径缩短了。已经不存在于 8.x 的旧行为(比如 PHP 7 里 0 == "abc" 为 true ),会在文字里说明,而不是伪造输出。 总览 版本 年份 代表性特性 5.0 2004 全新的面向对象模型、异常处理 5.1 2005 PDO 统一数据库访问层 5.3 2009 命名空间、闭包、后期静态绑定 5.4 2012 Trait、短数组语法 [] 5.5 2013 生成器 yield 5.6 2014 可变参数 ... 、幂运算符 ** 7.0 2015 Zend Engine 3(性能大幅提升)、标量类型声明、 ?? 、 <=> 、可捕获的 Error 7.1 2016 可空类型、 void 、多异常捕获 7.4 2019 类型化属性、箭头函数、预加载 8.0 2020 JIT、命名参数、构造器属性提升、联合类型、 match 、Nullsafe、Attributes 8.1 2021 枚举、 readonly 属性、Fibers 8.2 2022 readonly 类、DNF 类型 8.3 2023 类常量类型、 #[\Override] 、 json_validate() 8.4 2024 属性钩子、非对称可见性、延迟对象 8.5 2025 管道运算符 |> 、URI 扩展、clone with、 #[\NoDiscard] 7.2、7.3 等以修补和细节优化为主的版本没有单独列出。 PHP 5.x:现代 PHP 的地基 5.x 之前的 PHP 更像一门“能嵌进 HTML 的脚本语言”。这个系列补齐了工程化开发所需要的东西:像样的面向对象、统一的数据库层、命名空间和代码复用机制。 5.0 全新的面向对象模型 P...
最新博文

Node.js + TypeScript 服务端开发指南

面向已掌握 PHP、Go、早期(ES5 之前)JavaScript 的开发者 本文不从"变量是什么""函数是什么"讲起,而是假设你已经具备成熟的后端工程经验。每个新概念都会尽量与 PHP 或 Go 中你熟悉的对应物做类比,帮你用最短路径完成知识迁移。目标是让你能够独立设计、编写、测试、部署一个生产级的 TypeScript + Node.js 服务端应用。 目录 心智模型:Node.js 到底是什么 环境搭建与版本管理 现代 JavaScript 速通(ES5 → ES2024) TypeScript 核心 模块系统:CommonJS vs ESM 包管理与工程化 服务端开发实战 数据持久化 异步编程深入 测试 部署与运维 安全基线 进阶学习路径 附录:PHP / Go / Node 速查表 0. 心智模型 先建立一个准确的类比,后面所有内容都建立在这个模型上。 维度 PHP(传统 PHP-FPM) Go Node.js 执行方式 每个请求由 worker 进程处理,请求结束后大部分状态销毁 编译为原生二进制,进程常驻,goroutine 并发 进程常驻, 单线程事件循环 + 系统级异步 I/O 并发模型 多进程/多线程(由 FPM 管理) 多核并行,goroutine + channel,由调度器抢占 单线程跑你的 JS 代码,I/O 交给 libuv 线程池/内核异步接口,通过事件循环回调结果 一次请求阻塞会怎样 只影响这一个 worker 只影响这个 goroutine 会阻塞整个进程的所有请求 (这是 Node 新手最常踩的坑) 类型系统 弱类型,PHP8 起可选类型声明 强类型,编译期检查 JS 本身无类型;TypeScript 是 编译期 类型层,编译后类型信息完全擦除 部署产物 源码 + PHP 解释器 单个静态二进制 源码/编译后 JS + Node 运行时(除非用 node --compile-cache 或打包成单文件可执行文件) 关键心智转变 :在 Go 里你用 goroutine 换取并行;在 Node 里你 没有 并行(除非显式用 Worker Threads),你...