php教程技术文章
-
用 PHP DateTimeImmutable 演示 modify 加月的月末溢出,解释为什么 1 月 31 日会跳到 3 月,并给出稳定的月末计算写法。207 收藏 -
用 PHP Throwable 的 getTraceAsString 记录异常调用链,同时结合 getTrace、参数过滤和 error_log,避免把令牌、密码等敏感值直接写进线上日志。178 收藏 -
parse_url() 不会替 URL 自动补上 80 或 443。本文用 PHP_URL_PORT、HTTP_HOST 和 SERVER_PORT 拆开缺失端口、显式默认端口与代理转发场景,给出可复现的判断代码和安全边界。387 收藏 -
文章 · php教程 | 1星期前 | 反射 · 单元测试 · php教程 · 对象初始化 · php ReflectionClass newInstanceWithoutConstructor ReflectionProperty isInitialized 遗留代码测试
PHP 反射可以创建一个不执行构造函数的对象,适合给遗留类做边界测试,但未初始化属性仍可能在读取时抛出 Error。本文用 ReflectionClass、ReflectionProperty 和 isInitialized() 演示安全的测试夹具写法。157 收藏 -
PHP 的 parse_str() 不会把同名普通参数自动收集成数组;需要用方括号命名,并通过第二个参数接收结果。本文用可运行示例核对覆盖规则、键名转换和 max_input_vars 边界。282 收藏 -
PHP SplObjectStorage 可以按对象身份保存集合成员或附加数据。本文用 attach、contains、detach 还原对象生命周期,并补上 PHP 8.5 推荐的 offsetSet、offsetExists、offsetUnset 写法。323 收藏 -
文章 · php教程 | 1星期前 | WEB开发 · 安全 · PHP · session · 登录鉴权 · php session session.use_strict_mode session_regenerate_id 会话固定
PHP 会话固定防护不能只依赖一个配置项。本文从 session.use_strict_mode 的接收规则讲起,演示登录前后如何轮换 session_id,并说明旧 Cookie、并发请求和自定义 SessionHandler 的边界。483 收藏 -
用 PHP Fiber 把一个长任务拆成可暂停的执行段,演示 Fiber::start、Fiber::suspend、Fiber::resume 与 Fiber::getReturn 的调用关系、返回值边界和异常处理。433 收藏 -
从业务负载、连接边界和故障恢复三个角度,说明 PHP PDO 持久连接的适用条件,并给出可回滚的事务与断线重连示例。132 收藏 -
文章 · php教程 | 1星期前 | php教程 · 安全边界 · DOMDocument · XML解析 · php XML安全 DOMDocument LIBXML_NONET LIBXML_NO_XXE
用 PHP DOMDocument 解析不可信 XML 时,关键不是简单关闭一个开关,而是控制加载选项、保留解析错误并验证输入边界。本文对比 LIBXML_NONET、LIBXML_NO_XXE 与外部实体加载器的适用场景。128 收藏 -
用 DOMXPath 读取 XML 时,节点查询、count() 和 string() 返回的类型不同。本文用最小 PHP 示例说明如何判断返回值、处理空节点集,并把结果安全地转换成业务字段。158 收藏 -
文章 · php教程 | 1星期前 | php教程 · PHP会话 · SessionHandlerInterface · 数据库存储 · PHP会话 session_set_save_handler SessionHandlerInterface 数据库会话
把 PHP 会话从默认文件存储切到数据库时,真正容易出错的是回调顺序、原始序列化字符串和 gc 清理边界。本文用 SessionHandlerInterface 完成一套可核对的写入、读取、销毁与过期回收流程。134 收藏 -
PHP CLI 长任务不应靠强制终止收尾。本文用 pcntl_signal 接住 SIGTERM,在批处理检查点记录停止请求,区分当前批次完成与进程退出,并给出可回滚、可验证的部署处理方式。408 收藏 -
PHP 8.4 的 #[\SensitiveParameter] 可以让异常回溯和参数转储避开密码、令牌等敏感值。本文用一个登录服务例子说明它的作用范围、调用链和上线前的日志核对方法。310 收藏 -
PHP 8.2 的 readonly class 能把值对象的写入边界收紧到构造阶段,但它不等于深度不可变。本文用 Address 和 OrderSnapshot 说明构造、内部对象、clone 与继承限制。480 收藏