php教程技术文章
-
PHP backed enum 处理请求参数时,from() 失败会抛出 ValueError,tryFrom() 失败返回 null。本文说明如何清洗外部值、映射稳定业务错误,并让领域服务只接收合法枚举。467 收藏 -
PHP 8.5 的 setcookie() 支持 Partitioned 选项,本文用跨站嵌入场景说明 Secure、SameSite 和 Partitioned 的组合要求,并给出旧版本安全回退策略。466 收藏 -
在 PHP 8.1 里,如果用 FFI 去加载 .so 动态库时碰到 “Failed resolving C function” 这类报错,问题往往不在库本身,而是出在头文件里混入了 FFI_SCOPE 和 FFI_LIB 这两个宏定义。要注意,这两个宏本来就是给 FFI::scope() 这种加载466 收藏 -
PHP 8.6 为 ReflectionProperty 增加 isReadable 与 isWritable。本文拆开 scope、object、hooks、readonly 和未初始化状态,说明检测结果能判断什么,以及为什么不能保证实际读写一定成功。465 收藏 -
文章 · php教程 | 2星期前 | 队列 · PHP · 并发控制 · laravel · php教程 · php Laravel Laravel Queue ShouldBeUnique WithoutOverlapping 队列锁 任务幂等
Laravel 队列避免任务重复执行,不能只依赖一个模糊的全局锁。本文区分重复入队与执行重叠,分别用 ShouldBeUnique 和 WithoutOverlapping 保护业务键与共享资源,并说明 releaseAfter、tries、expireAfter 和共享缓存的配置关系。465 收藏 -
PHP ArrayObject::exchangeArray 可以把对象当前持有的数组替换成新的数组或对象,并返回被替换的旧数组。本文用最小示例说明对象引用、旧数据接收、迭代器边界和性能指标如何判断。464 收藏 -
PHP 8.6 闭包优化 RFC 只把无状态闭包缓存部分合入。本文从 static、变量捕获、static 变量和对象绑定四个边界说明旧项目如何判断是否适合升级。463 收藏 -
PHP Attribute 可以把参数字段名、必填性等稳定描述放在声明旁边,再由 ReflectionParameter 读取。本文用参数目标限制、getAttributes 筛选、getArguments 与 newInstance 的边界,说明它适合解决什么问题,以及为什么不应把它当成自动校验器。463 收藏 -
用 PHP 递归处理 JSON 日志中的密码、令牌和个人字段,兼顾嵌套数组、无效 UTF-8、null 值与审计可追溯性,给出可测试的脱敏边界。462 收藏 -
用 SplObjectStorage::removeAll() 从当前对象集合中批量移除另一存储里的同一批实例,说明参数方向、对象身份和剩余数量返回值。462 收藏 -
PHP CachingIterator 只有启用 FULL_CACHE 才能用 getCache() 读取已遍历数据;本文说明如何按下标取值、判断缓存边界并处理异常。462 收藏 -
用 PHP backed enum 稳定映射数据库状态值,覆盖旧编码兼容、tryFrom 边界、分批回填与未知状态处理。461 收藏 -
线上执行 composer install --no-dev 后找不到类,通常不是命名空间突然失效,而是类被声明在 autoload-dev 或依赖只放在 require-dev。本文按依赖边界定位并修正。460 收藏 -
PHP 使用 stream_context_create 配置 TLS 时,应同时保留证书链校验与主机名校验。本文对比普通域名、按 IP 连接、私有 CA 和证书指纹场景,给出 verify_peer、verify_peer_name、peer_name 与 cafile 的安全写法。460 收藏 -
PHP 8.3 新增的 json_validate() 只返回 JSON 语法是否有效,不构建数组或对象。本文讲清参数、错误信息、版本边界,以及何时不要先验证再解码。460 收藏