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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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年前 评论

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