编写健壮的PHP代码,规避类型转换陷阱、数组怪癖及常见安全漏洞。
快速引用 : 图片 : 字体 : 数字 : 数字 : 输入 , ================================================是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
| 主题 | 文件 |
|---|---|
| 弱类型、==、===、类型转换(type juggling)、strict_types | types.md |
| 关联数组、遍历、数组函数 | arrays.md |
| Traits、接口、可见性、后期静态绑定(late static binding) | oop.md |
| 编码、插值、heredoc、正则表达式(regex) | strings.md |
| 异常、错误处理、@ 运算符 | errors.md |
| SQL 注入、XSS、CSRF、输入验证 | security.md |
| PHP 8+ 新特性、Attributes、命名参数(named args)、match 表达式 | modern.md |
== 会进行类型强制转换:例如 "0" == false 返回 true —— 始终使用 === 进行严格比较in_array($val, $arr) 默认使用松散比较 —— 如需严格比较,请将第三个参数设为 truestrpos() 在匹配位于字符串开头时返回 0 —— 应使用 === false 判断失败,而非 !strpos()htmlspecialchars($s, ENT_QUOTES) —— 防止 XSS 攻击isset() 对值为 null 的键返回 false —— 若仅需检查键是否存在,请使用 array_key_exists()foreach ($arr as &$val) 中的引用变量 —— 循环结束后务必 unset($val),否则最后一个引用将持续存在static:: 实现后期静态绑定(late static binding),而 self:: 是早期绑定(early binding)—— static 尊重子类对静态成员的重写@ 运算符用于抑制错误 —— 应避免使用,因其会使调试完全失效Throwable 类型以同时处理 Error 和 Exception —— PHP 7+ 支持declare(strict_types=1) 开头 —— 启用严格类型检查strlen() 统计的是字节数 —— 对 UTF-8 字符串应使用 mb_strlen() 获取字符数clone $objarray_merge() 会对数字键重新索引 —— 若需保留原键,请使用 + 运算符合并数组