在bash函数中声明局部变量使该变量仅在函数本身及其子级内部可见,因此如果我运行:
#!/bin/bash
set -e
func_one() {
echo "${var}"
}
func_two() {
local -r var="var from func_two"
func_one
}
func_two
Run Code Online (Sandbox Code Playgroud)
输出为:
var from func_two
Run Code Online (Sandbox Code Playgroud)
即使var变量声明为local,并且func_two内的只读变量也可以从func_one函数访问。在后者中,可以声明一个具有本地和只读名称的变量:
#!/bin/bash
set -e
func_one() {
local -r var="var from func_one"
echo "${var}"
}
func_two() {
local -r var="var from func_two"
func_one
}
func_two
Run Code Online (Sandbox Code Playgroud)
输出为:
var from func_one
Run Code Online (Sandbox Code Playgroud)
如果从EXIT陷阱调用func_one,也会发生同样的情况:
#!/bin/bash
set -e
func_one() {
local -r var="var from func_one"
echo "${var}"
}
func_two() {
local …Run Code Online (Sandbox Code Playgroud) 从官方文档中可以看出,当前在 Symfony 框架中手动哈希密码的过程如下:
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
public function register(UserPasswordEncoderInterface $encoder)
{
// whatever *your* User object is
$user = new App\Entity\User();
$plainPassword = 'ryanpass';
$encoded = $encoder->encodePassword($user, $plainPassword);
$user->setPassword($encoded);
}
Run Code Online (Sandbox Code Playgroud)
该encodePassword方法需要将 User 实例作为其第一个参数传递。因此,在调用该方法时,用户实例必须预先存在:这意味着必须在没有有效散列密码的情况下实例化“用户”。我希望将密码作为构造函数参数提供,以便用户实体在创建时处于有效状态。
是否有其他方法使用 Symfony 对密码进行哈希处理?