-
用 PHP mb_substr 按 UTF-8 字符截取中文,区分 strlen 的字节长度,处理 mbstring、空值、省略号和边界测试。
-
filter_var 返回 true 只说明 URL 结构符合 PHP 的校验规则,并不代表主机可解析、协议可用或域名属于业务白名单。本文用 PHP 示例拆开三层判断,补上安全的 host 白名单写法。
-
登录成功后应轮换 PHP 会话 ID 来防止会话固定,但不宜用 session_regenerate_id(true) 立即删除旧数据。本文用保留窗口、旧 ID 标记和严格模式解释怎样避免移动网络或并发请求导致刚登录就掉线。
-
Composer 的 files 适合每次引入自动加载器时加载的函数文件,classmap 适合无法遵循 PSR-4 的类;普通命名空间类优先 PSR-4。本文用配置示例和边界表说明如何选择。
-
PHP array_filter 不传 callback 时会按 empty() 语义过滤,0、"0"、false、null 和空字符串都可能被删除。本文拆开默认参数、显式回调、键名保留和 array_values() 重排的边界,避免清洗数据时误删有效零值。
-
DateTimeImmutable 用 modify('+1 month') 修改月底日期时不会自动截断到目标月末,而是按相对日期规则继续归一化。本文解释月份溢出的原因,并给出月底对齐、显式日号校正和回归测试写法。
-
PHP PDO 一个占位符不能直接展开数组。本文解释 IN 查询绑定失败的原因,给出动态生成占位符、处理空数组、复查参数数量与异常模式的安全写法。
-
用 PHP 的 Throwable、getPrevious() 和统一异常边界,把底层 PDO 错误留在服务端日志,同时向客户端返回安全、稳定的错误响应。
-
修改 Composer 的 PSR-4 自动加载映射后,为什么还会 Class not found?本文用 composer.json、vendor/composer 生成文件和 class_exists 检查,说明 dump-autoload 的作用、生产优化参数与常见排查边界。
-
PHP 项目报 Class not found 时,先不要盲目重装依赖。本文用 App\ 映射到 src/ 的例子,按命名空间、目录、文件名、大小写、dump-autoload 和 class_exists 逐层核对,定位 Composer PSR-4 自动加载失效的具体位置。
-
开启 PHP session.use_strict_mode 后,旧系统可能因手工预设未初始化 Session ID 而读不到登录前状态。本文解释 Cookie、有效 Session 和严格模式的关系,并给出先启动会话、登录后轮换 ID 的改法。
-
PHP Session cookie 可以在 session_start 前用 options 数组同时配置 SameSite、Secure 和 HttpOnly。本文说明 Lax 与 Strict 的选择、HTTPS 前提,以及 cookie 生命周期和服务端 Session 清理的区别。
-
PHP backed enum 直接 json_encode 时默认输出 backing value,而不是 case 名称。本文用最小示例区分 name、value、from/tryFrom,并给出需要输出名称或二者并存时的 JsonSerializable 写法。
-
PHP backed enum 处理请求字符串时,应在输入边界先用 tryFrom() 判断合法性,非法值返回 400;可信内部值再使用 from(),JSON 默认输出 backing value。
-
PHP Attribute 参数传错时,应把类型写进属性构造函数,并在配置加载阶段调用 ReflectionAttribute::newInstance(),让 TypeError 或业务校验异常在服务启动前暴露。本文给出属性定义、反射过滤、异常上下文和常见边界的完整写法。