php教程技术文章
-
文章 · php教程 | 2星期前 | 反射 · attribute · php教程 · PHP 8 · 代码验收 · php ReflectionClass Attribute ReflectionAttribute getAttributes isRepeated
PHP 8 的 Attribute 读取不是简单遍历字符串:ReflectionClass::getAttributes() 的名称过滤、ReflectionAttribute::IS_INSTANCEOF、isRepeated()、getArguments() 和 newInstance() 分别解决不同的验收问题。本文用一个可运行的注解扫描器拆开继承筛选、重复声明和参数校验边界。134 收藏 -
处理日志或导入文件时,stream_filter_append 可以把换行规范化放进流读取链,避免一次性读入大文件。本文用可复查的代码说明过滤器注册、读取边界、资源关闭和内存检查。134 收藏 -
文章 · php教程 | 2星期前 | php教程 · PHP会话 · SessionHandlerInterface · 数据库存储 · PHP会话 session_set_save_handler SessionHandlerInterface 数据库会话
把 PHP 会话从默认文件存储切到数据库时,真正容易出错的是回调顺序、原始序列化字符串和 gc 清理边界。本文用 SessionHandlerInterface 完成一套可核对的写入、读取、销毁与过期回收流程。134 收藏 -
文章 · php教程 | 2星期前 | 日志 · CLI · 异常处理 · PHP · 进程验收 · Throwable 退出码 register_shutdown_function 命令行脚本 PHP CLI
PHP CLI 脚本明明抛出了异常,shell 或 CI 却拿到 0,通常不是 PHP 没有报错,而是异常、致命错误和 shutdown 回调被混在了一条观测链里。本文从命令行任务现场出发,拆开 Throwable、register_shutdown_function 与退出码的关系,并给出可复现的日志验收方法。133 收藏 -
从业务负载、连接边界和故障恢复三个角度,说明 PHP PDO 持久连接的适用条件,并给出可回滚的事务与断线重连示例。132 收藏 -
PHP 的 array_filter 会保留原数组键,被过滤的数字键形成空洞后,json_encode 会把这一层编码成 JSON 对象。本文用一个接口列表示例说明原因,并给出 array_values、嵌套数组和空结果的处理方式。132 收藏 -
文章 · php教程 | 16小时前 | PHP · curl · 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 DateTimeImmutable 出现时差、解析失败或 modify 不生效时,按时区、解析错误和不可变返回值三层排查,并用 RFC3339 输出确认对象状态。132 收藏 -
文章 · php教程 | 1个月前 | 重定向 · PHP · 后端开发 · PHP 8.5 · URL安全 · URL规范化 PHP 8.5 URI扩展 重定向白名单 Uri\Rfc3986\Uri
PHP 8.5 新增内置 URI 扩展,可按 RFC 3986 和 WHATWG URL 标准解析、规范化并修改地址。以登录回跳为例,本文给出基于 Uri\Rfc3986\Uri 的 scheme 与 host 白名单写法、旧 parse_url() 方案的边界,以及上线前的兼容性检查。130 收藏 -
PHP 的 TCP 探活不该只看一个布尔值。本文用 stream_socket_client() 拆解 DNS、连接超时、端口拒绝、上下文参数和日志归因,给出可回归的最小检查器。130 收藏 -
PHP stream_select 适合把多个非阻塞流放进同一等待循环。本文用 socket_pair 演示读写集合、超时返回值、EOF 与部分写入的判断,解释为什么每轮必须重建数组,避免 CPU 空转。128 收藏 -
文章 · php教程 | 2星期前 | php教程 · 安全边界 · DOMDocument · XML解析 · php XML安全 DOMDocument LIBXML_NONET LIBXML_NO_XXE
用 PHP DOMDocument 解析不可信 XML 时,关键不是简单关闭一个开关,而是控制加载选项、保留解析错误并验证输入边界。本文对比 LIBXML_NONET、LIBXML_NO_XXE 与外部实体加载器的适用场景。128 收藏 -
PHP 8.6 将 Git 源码构建所需的最低 Autoconf 版本提高到 2.71。本文比较官方发布包、容器化构建和直接拉取源码三种路径,说明哪些环境需要升级以及上线前怎样检查。128 收藏 -
PHP 密码策略升级不需要一次性重置所有用户。先用 password_verify 验证旧哈希,再用 password_needs_rehash 判断算法或 cost 是否落后,并在同一次成功登录中原子更新密码哈希。126 收藏 -
PHP 登录时升级旧密码哈希,要先区分 password_hash 生成的哈希和历史自定义格式:前者验证成功后用 password_needs_rehash 判断,后者用原规则验证成功后立即改存 password_hash,并用旧值条件更新避免并发覆盖。125 收藏