php 8.0联合类型仅支持函数参数、返回值、静态变量三处;类属性声明int|string $id会触发parseerror,不可用。

整理PHP 8.0联合类型笔记时,需兼顾语法准确性、可读性与后续查阅效率,避免把错误写法(如类属性直接声明联合类型)混入笔记正文造成误导。
先筛出合法位置,再分块记录
只在函数参数、返回值、静态变量这三处写联合类型语法,其他位置一律不记为“支持”。例如:public int|string $id; 这种写法必须标注【ParseError:语法错误,不可用】,不能只写“不推荐”或“慎用”。
把笔记按位置切分成三个主区块:参数声明、返回值声明、静态变量声明。每个区块开头用一句话定性:“仅此处运行时强制校验”“此处校验依赖PHP引擎触发时机”“静态变量联合类型在PHP 8.0+完全可用”。
参数声明区块排版要点
方法一:基础竖线写法
直接写 function find(int|string $id): array,后面紧跟一行注释说明:“注意:调用时传入布尔值或数组会立即抛出TypeError”。
方法二:混合默认值+命名参数场景
写成 function filter(string|array $keyword = '', bool $strict = false): array,并在下方补充:“命名调用时若省略$strict,仍会触发联合类型检查——$keyword的类型约束不因默认值存在而失效”。
方法三:含null的常见组合
单独列出 array|null、string|null、int|float|null 三行,每行后加小字说明:前者对应可选数组参数,中者是PHPDoc历史写法迁移首选,后者在数值计算中需警惕null参与运算导致TypeError。
返回值声明区块排版要点
第一步:用表格对比写法与效果
左列写签名示例(如: string|int),右列写实际行为(如“返回123不报错,返回true则抛出TypeError”)。
第二步:标出易混淆点: mixed 不是联合类型,但常被误放在此区块——需另起一行用红色字体注明:“mixed是独立顶层类型,不可写作string|mixed,否则语法错误”。
第三步:关联运行时行为
在区块末尾加一句:“返回值校验发生在return执行瞬间,不是函数退出时;若函数内有多个return,每个都独立校验”。
静态变量联合类型排版方式
直接写示例:function counter(): int { static int|string $count = 0; $count++; return $count; }。
这一步操作起来很简单,但要注意:静态变量初始化值必须匹配联合类型中的至少一个分支,= 'abc' 对 int|string 合法,= [] 则非法。
在下方补一句关键提醒:【静态变量类型在首次执行时锁定,后续赋值必须始终满足该联合类型】。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











