php教程技术文章
-
PHP match 未处理分支通常不是语法错误,而是严格比较没有命中且表达式没有覆盖全部输入。本文用 default、异常边界和类型检查给出一套排查方法。498 收藏 -
PHP 的 array_is_list() 不支持通过配置放宽条件;它只认从 0 开始且按顺序无缺口的整数键。本文用键检查定位 unset 和 array_filter 造成的断档,并说明何时用 array_values() 修复列表形状。157 收藏 -
本文用分页参数 page 演示 PHP filter_input 的四个参数配置,解释 FILTER_VALIDATE_INT、options、默认值,以及 null、false 和合法值的排查边界。363 收藏 -
以 PDO_MYSQL 为例,说明如何关闭模拟预处理、设置异常模式、验证参数绑定,并排查驱动、占位符和 SQL 标识符边界。288 收藏 -
PHP DateTimeImmutable 出现时差、解析失败或 modify 不生效时,按时区、解析错误和不可变返回值三层排查,并用 RFC3339 输出确认对象状态。132 收藏 -
关闭 OPcache.validate_timestamps 能减少文件时间戳检查,但发布时必须主动处理缓存。本文用版本目录、文件级失效、FPM 重载和健康检查,整理一套可回滚的 PHP 发布顺序。201 收藏 -
PHP DateTime 时区转换后日期跨天,通常是同一时间点在目标时区的本地日期不同。本文区分 setTimezone、setTime 和字符串解析,说明如何保留原始时间并按业务时区计算日期。107 收藏 -
文章 · php教程 | 2星期前 | PHP · HTTP客户端 · php Curl curl_share_init_persistent CURL_LOCK_DATA_DNS CURL_LOCK_DATA_CONNECT
PHP 8.5 的 curl_share_init_persistent 可以跨请求复用 DNS、连接和 TLS session,但不能共享 Cookie。把网络缓存与用户身份分开,才能降低连接复用带来的跨请求状态泄漏风险。132 收藏 -
PHP 8.5 升级排查不要只盯动态属性。本文把 PHP 8.5 新弃用与 PHP 8.2 动态属性历史问题分开,用 E_ALL 日志、源码扫描和测试矩阵定位受影响代码。251 收藏 -
PHP Fiber 的异常不是由 resume 返回,而是从 Fiber::suspend() 的暂停点重新抛出;本文用一个最小任务调度器说明 start、resume、throw 的关系和终止边界。246 收藏 -
PHP PDO 处理订单、库存等多条写操作时,应使用异常模式和显式事务边界:成功统一 commit,异常确认事务活动后 rollBack,并检查表引擎、驱动和 DDL 隐式提交风险。476 收藏 -
PHP 的 SameSite=None 必须配合 Secure,本地 HTTP、localhost 例外和跨站请求条件又不完全相同。本文用配置示例和排查清单说明为什么 Cookie 看似设置成功却没有随下一次请求发送。234 收藏 -
文章 · php教程 | 2星期前 | session · php教程 · php SessionHandlerInterface session.use_strict_mode validateId
解释 PHP session.use_strict_mode 与自定义 session handler 的配合边界,给出 validateId、read、write、create_sid 和 updateTimestamp 的职责划分与数据库 handler 示例。269 收藏 -
PHP 8.5 的 NoDiscard 属性用于提醒调用方不要悄悄丢弃重要返回值。本文说明如何选择适用函数、添加提示、处理有意忽略的结果,并厘清接口、继承和 trait 的边界。486 收藏 -
PHP 8.5 中 array_first 和 array_last 遇到空数组都会返回 null。本文对比有效 null、旧版本兼容写法和 ?? 默认值的使用边界。367 收藏