PHP:is_string()的返回值是否随时间变化?

wlsrxk51  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(140)

我正在尝试为一个非常向后兼容的遗留PHP应用程序做贡献,我想确定is_string()的行为。
例如,我想假设这些事实在所有版本的PHP中都是正确的。我只是在PHP 5.4之后才真正感兴趣,但如果有不同行为的旧版本,这并不坏。
以下是我从PHP 5.4到PHP 8.2的一些例子:

  • is_string(null)false
  • is_string([ "a" ])false
  • is_string("0")true
  • x一米七氮一x → x一米八氮一x

相关文件:

5kgi1eie

5kgi1eie1#

简短回答:没问题。
您提到的函数is_string()的情况非常稳定,您可以在所有已知的PHP版本中依赖这些,至少从PHP 4.0.6开始。
我所做的一切
我创建了这个小测试用例,它没有使用PHP的任何新功能(不使用throw new Exception,不使用[]等):

<?php
// Report all PHP errors
error_reporting(E_ALL); 

function assert_equals($msg, $v, $expected) {
    if( $v !== $expected ) {
        echo "Fail test: $msg\n";
        exit(1);
    }
}

assert_equals('null',        is_string(null),       false);
assert_equals('array',       is_string(array("a")), false);
assert_equals('zero string', is_string("0"),        true);
assert_equals('empty',       is_string(""),         true);

我测试了这些版本:

  • 简体中文
  • 简体中文
  • 简体中文
  • 简体中文
  • 简体中文
  • 简体中文
  • 简体中文
  • 简体中文
  • 简体中文
  • PHP语言5.4.0
  • PHP语言5.5.0
  • 简体中文
  • PHP 7.0语言
  • PHP 7.0.33语言
  • 简体中文
  • PHP 7.1.33语言
  • 简体中文
  • PHP 7.2.34语言
  • 简体中文
  • PHP 7.3.33语言
  • 简体中文
  • PHP 7.4.33语言
  • PHP 8.0语言
  • PHP 8.1语言
  • PHP 8.2语言

我没有注意到任何变化。
因此,您的is_string()测试用例可以被认为适用于任何版本的PHP。

相关问题