'password' => $password ?: $password = bcrypt ('secret'), 这是什么意思?

这是三目表达式么?还是省略了啥?
file

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
jaak
最佳答案

表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。http://php.net/manual/zh/language.operator...

7年前 评论
讨论数量: 5

由于 bcrypt() 函数需要比较大的计算量和比较长的时间,所以作者在开始就将它保存到静态的 password 里面 ,在后面生成密码的时候直接检测这个静态变量有没有值,如果没有值就会给他重新用 bcrypt() 加密赋值一下

7年前 评论

laravel 用命令 make:auth 生成的注册是用的 bcrypt() 加密存储密码的,所以直接操作数据库的话要手动加密

7年前 评论

这句意思是:$password = $password ? '':bcrypt ('secret'); ?: 是一种简写 。你可以自己试一下 :wink:

7年前 评论
jaak

表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。http://php.net/manual/zh/language.operator...

7年前 评论

@aimerforreimu 这下知道了为什么原文档是加密后的一串而不是一个 bcrypt('secret') 了

'password'    => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm'
6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!