簡體   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