将 ext/hash 从资源移动到对象 php PHP 7.2 迁移
Move ext/hash from resources to objects php PHP 7.2 migration
As part of the long-term migration away from resources, the Hash
extension has been updated to use objects instead of resources. The
change should be seamless for PHP developers, except for where
is_resource() checks have been made (which will need updating to
is_object() instead).
“Hash extension 已更新为使用对象而不是资源
我不明白
1) 在 "hash extension" 中哪里有这种变化?
2)第二句"which will need update",指的是,我理解为Hash函数(扩展部分)中的is_resource,但是,究竟是怎么回事?
哪个是 "should be replaced" ?
的确切示例
谢谢。
7.2 之前的方法,如...
<?php
$ctx = hash_init('md5');
var_dump($ctx);
...会输出类似 resource(7, Hash Context)
的内容。 returned 值为 "resource"。
A resource is a special variable, holding a reference to an external
resource.
从 7.2 开始,他们将其更改为 return 类型为 HashContext 的实际对象 (class)。
因此,您可能需要更改计算这些哈希函数的 return 值的方式。
以前您可能只是检查 is_resource()
(可能 get_resource_type()
),现在您可以使用 is_a
或 instanceof
。
if ($h instanceof \HashContext) { ...
真的取决于代码。您可能不需要更改任何内容。取决于 if/how/where 您的代码评估其中一些函数的 return 值。您可能会在单元测试中找到的东西...
例如,即使 $ctx
更改类型:
,此代码仍可用于 pre/post 7.2
$ctx = hash_init('md5');
hash_update($ctx, 'The quick brown fox ');
hash_update($ctx, 'jumped over the lazy dog.');
echo hash_final($ctx);
As part of the long-term migration away from resources, the Hash extension has been updated to use objects instead of resources. The change should be seamless for PHP developers, except for where is_resource() checks have been made (which will need updating to is_object() instead).
“Hash extension 已更新为使用对象而不是资源 我不明白
1) 在 "hash extension" 中哪里有这种变化?
2)第二句"which will need update",指的是,我理解为Hash函数(扩展部分)中的is_resource,但是,究竟是怎么回事? 哪个是 "should be replaced" ?
的确切示例谢谢。
7.2 之前的方法,如...
<?php
$ctx = hash_init('md5');
var_dump($ctx);
...会输出类似 resource(7, Hash Context)
的内容。 returned 值为 "resource"。
A resource is a special variable, holding a reference to an external resource.
从 7.2 开始,他们将其更改为 return 类型为 HashContext 的实际对象 (class)。
因此,您可能需要更改计算这些哈希函数的 return 值的方式。
以前您可能只是检查 is_resource()
(可能 get_resource_type()
),现在您可以使用 is_a
或 instanceof
。
if ($h instanceof \HashContext) { ...
真的取决于代码。您可能不需要更改任何内容。取决于 if/how/where 您的代码评估其中一些函数的 return 值。您可能会在单元测试中找到的东西...
例如,即使 $ctx
更改类型:
$ctx = hash_init('md5');
hash_update($ctx, 'The quick brown fox ');
hash_update($ctx, 'jumped over the lazy dog.');
echo hash_final($ctx);