以下语句按执行优先级拆解一下:
isset($options['smtp_password']) ?? '111';
最优先执行的 isset($options['smtp_password'])
的返回值是 true 或 false。
之后使用 ??
来判断 isset($options['smtp_password'])
是否已定义,想当然的是按 true 处理的,于是这个语句最后返回的值就是三目左侧的 true 或 false,而不是选项值。
正确写法应该是:
$phpmailer->Password = $options['smtp_password'] ?? '111';