php教程技术文章
-
CSV 字段内部可以包含换行,但前提是字段被 enclosure 正确包住。本文用 PHP fgetcsv 说明如何显式设置参数、保留多行字段,并排查 length、引号闭合和 PHP 8.4 escape 提醒。440 收藏 -
Laravel 13 新增 Cloud Facade,可用 hosted 判断是否运行在 Laravel Cloud,用 usesManagedQueues 判断是否启用托管队列,并在确认配置后通过 queue 取得连接。本文给出边界清晰的封装方式与回退思路。439 收藏 -
PHP 8.3 的 json_validate() 返回 false 时,不要只看布尔值。本文用 JSON_ERROR_UTF8 与 JSON_ERROR_SYNTAX 区分非法编码和结构错误,并说明 JSON_INVALID_UTF8_IGNORE 的取舍。439 收藏 -
本文介绍如何在 PHP 中对带小数点(radix)的任意精度数值进行十进制与十六进制的高精度双向转换,解决 BCMath 缺乏进制转换支持的问题,并推荐成熟可靠的开源库方案。 本文介绍如何在 PHP 中对带小数点(radix)的任意精度数值进行十进制与十六进制的高精度双向转换,解决 BCMath 缺438 收藏 -
PHP 8.3 引入的 #[\Override] 可以在继承方法改名、接口调整或父类重构时尽早暴露契约断裂。本文用一个订单服务重构场景,拆解属性放置、编译期报错、接口实现和部署前回归检查。438 收藏 -
PHP 8.4 的属性钩子让属性可以只有 get 逻辑,但反射遍历时不能再把所有属性都当作有存储空间。本文用 ReflectionProperty::isVirtual 区分虚拟属性、带存储的 hooked 属性和普通属性,并给出兼容旧版本的检测边界。438 收藏 -
PHP Fiber 适合把需要等待外部结果的工作单元包装成可暂停任务。本文用 start、suspend、resume、throw 和 getReturn 说明调度边界,并强调 Fiber 本身不会自动把同步阻塞调用变成异步 I/O。438 收藏 -
PHP 的 finally 会在 try/catch 之后执行;如果 finally 中再次 return,就会覆盖原本准备返回的值,甚至让异常无法继续向外传播。本文用最小示例拆解这个控制流边界。435 收藏 -
PHP DatePeriod 默认排除结束日期。本文区分 PHP 8.2 起的 INCLUDE_END_DATE、结束日期不对齐时的手动补齐,以及旧版本兼容和重复日期检查。434 收藏 -
PHP 枚举实现业务接口并不会自动定义序列化格式。本文区分原生 serialize、JSON 输出与反向恢复,给出 JsonSerializable、tryFrom 和兼容演进的完整边界写法。434 收藏 -
PHP 使用 substr 截取中文可能产生乱码。本文用 mbstring 和 mb_substr 按字符安全截取,并说明编码参数、负数起点、长度判断与显示宽度边界。434 收藏 -
用 PHP Fiber 把一个长任务拆成可暂停的执行段,演示 Fiber::start、Fiber::suspend、Fiber::resume 与 Fiber::getReturn 的调用关系、返回值边界和异常处理。433 收藏 -
文章 · php教程 | 1星期前 | 序列化 · PHP · 迁移 · 兼容性 · unserialize __sleep __wakeup Serializable PHP 8.5 __serialize __unserialize
PHP 8.5 已将 __sleep() 和 __wakeup() 标记为软弃用,推荐用 __serialize() 和 __unserialize() 显式控制对象载荷。本文给出兼容旧载荷的迁移写法,并说明 unserialize() 的 allowed_classes、完整性校验与不可信输入边界。432 收藏 -
排查PHP类型属性赋值触发TypeError的原因,区分写入位置的严格模式、空值与未初始化Error,给出正整数输入解析示例,并说明ORM水合与构造函数的边界。432 收藏 -
通过提醒与截止日期的独立派生示例,说明 DateTimeImmutable 如何保留基准日期、接收链式调用返回值,并处理旧 DateTime 转换与迁移中的赋值误区。431 收藏