繁体   English   中英

试图理解 openssl_sign 中的 &$signature 参数

[英]Trying to understand &$signature parameter in openssl_sign

我试图理解-> https://www.php.net/manual/en/function.openssl-sign.php具有&$signature参数。 我读到这个 -> PHP &$string - 这是什么意思? 但仍然不明白为什么我们必须有&$signature作为参数或者我们如何使用它。 https://www.php.net上的示例没有描述该变量的使用。

这是他们的一个例子。

<?php
// $data is assumed to contain the data to be signed

// fetch private key from file and ready it
$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");

// compute signature
openssl_sign($data, $signature, $pkeyid);

// free the key from memory
openssl_free_key($pkeyid);
?>

顺便说一句,2022 年新年编码很棒!

这意味着您通过引用传递一个变量( https://www.php.net/manual/en/language.references.pass.php ),用最简单的术语来说,这意味着您传递的变量可以由方法或 function 修改,无需返回它。

例如:

$a = 1;

function foo($value) {
    $value++;
}

foo($a);

// $a is still 1
var_dump($a);

而将函数的签名指定为&$value

$b = 1;

function bar(&$value) {
    $value++;
}

bar($b);

// $b is 2
var_dump($b);

因此openssl_sign() function 可能会修改$signature的值,而无需您通过 getter 请求它的更新值。

还应注意,对象始终通过引用传递,因此不需要&$签名 - 它们的 state 将始终被修改,并且可以在随后传递给的 function 之外使用。

Function 'openssl_sign' 被定义为计算通过引用传递的签名。

如果没有 '&',则在调用 function 后参数签名不会改变。

如果您通过引用 function 来传递 var,那么 function 可以直接修改变量而不返回值。

https://www.php.net/manual/en/language.references.pass.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM