我正在尝试了解BcryptHasher.php文件中Laravel 4.2的以下功能是如何工作的:
/**
* Hash the given value.
*
* @param string $value
* @param array $options
* @return string
*
* @throws \RuntimeException
*/
public function make($value, array $options = [])
{
$cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;
$hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => $cost]);
if ($hash === false) {
throw new RuntimeException('Bcrypt hashing not supported.');
}
return $hash;
}
我想我理解除了这一行之外的所有事情:
$cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;
我了解$ this-> rounds的默认值设置为10,然后是密码将被散列的“费用”。但是,我对$ options数组正在做什么以及如何影响成本感到困惑?
答案 0 :(得分:6)
您可以在调用make
方法时传递选项。
例如,使用立面:
$hashed = Hash::make($value, ['rounds' => 8]);
如果您未传递cost
,则会使用$this->rounds
,10
。