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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
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...

5年前 评论
讨论数量: 5

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

5年前 评论

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

5年前 评论

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

5年前 评论
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...

5年前 评论

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

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

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