问题标签 [php-8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
614 浏览

php - 如何使用匹配表达式而不是 switch 表达式

我们可以在 PHP 8 中使用 match 表达式而不是 switch case。

如何为以下 switch 案例正确编写匹配表达式?

0 投票
1 回答
561 浏览

php - 即将到来的 PHP8 的扩展运算符和它预先存在的紧凑函数有什么区别?

compact()即将到来的 PHP8 的扩展运算符和它的预先存在的函数有什么区别?

$data = new CustomerData(...$input);

0 投票
3 回答
2162 浏览

php - 如何执行不区分大小写的 str_contains?

我的代码中有很多if(mb_stripos($hay, $needle) !== false)。我该如何替换它str_contains()

例如,我的代码中有这个辅助函数:

如何使它与 new 一起使用str_contains()

演示

0 投票
2 回答
12174 浏览

php - PHP 8 开发中的 Laravel

我有一个带有 php 8.0.0-dev 和 composer 的 docker 容器。我想创建一个 Laravel 应用程序来测试新的 PHP,但我有一些错误。

当我尝试使用以下命令创建一个新的 laravel 项目时:

我得到的错误是我没有所需的 PHP,即使 php 8.0.0 大于 php 7.x。

我可以以某种方式跳过 php 版本检查吗?

我试过了

但我收到此错误:

任何的想法?

谢谢!!!

0 投票
2 回答
5256 浏览

php - 警告:只有第一个字节将分配给字符串偏移量

以下代码在 PHP 7 中运行良好,为什么我在 PHP 8 中看到此警告?

0 投票
1 回答
550 浏览

php - 无法设置错误处理程序以在 PHP-8 中抛出 ErrorException

我的脚本有以下代码:

在 PHP 7.3.11(macOS 10.15.7)上运行脚本按预期工作,并显示以下内容:

致命错误:未捕获的 ErrorException:未定义的变量:在 .../index.php:9 中测试 堆栈跟踪:

#0 .../index.php(9): {closure}(8, 'Undefined varia...', '...', 9, Array)

#1 .../index.php(12): 测试()

#2 {主要}

下一个 TypeError: test() 的返回值必须是字符串类型,在 .../index.php:9 中返回 null 堆栈跟踪:

#0 .../index.php(12): 测试()

#1 {main} 在第 9 行的 .../index.php 中抛出

但是在 PHP-8 ( php:8.0.0rc1-apachedocker image ) 上,它卡在一个循环中并且没有显示任何内容。

虽然删除set_error_handler作品

警告:第 9 行 .../index.php 中未定义的变量 $test

致命错误:未捕获的 TypeError:test():返回值必须是字符串类型,在 .../index.php:9 中返回 null

堆栈跟踪:

#0 .../index.php(12): 测试()

#1 {main} 在第 9 行的 .../index.php 中抛出

这是一个错误,还是在新版本中发生了一些变化?我在 PHP CLI 上试过了。

0 投票
2 回答
99 浏览

php - 由命名参数和函数调用中的参数解包生成的错误在 PHP-8 中不抛出 ErrorException

以下代码按预期工作:抛出 ErrorException 并为由生成的致命错误调用关闭函数require

输出:

require(unavailable_file):无法打开流:没有这样的文件或目录

无论如何,你好世界

但是命名参数产生的致命错误无法调用异常处理程序和关闭函数

输出:

致命错误:无法组合命名参数和参数解包

将它们全部结合起来也没有按预期工作,并且没有捕获到ErrorExceptionfromrequire

输出:

致命错误:无法组合命名参数和参数解包

那么这是另一个错误还是我在这里遗漏了什么?

PS: PHP版本为8.0.0RC2(cli)

0 投票
2 回答
1634 浏览

php - 不能使用 null 作为 PHP-8 中参数的默认值

在 php-8 和旧版本中,以下代码有效

但是在php-8中,随着属性提升,它会抛出一个错误

致命错误:不能使用 null 作为字符串类型的参数 $string 的默认值

虽然使字符串可以为空

那么这也是一个错误还是预期的行为?

0 投票
2 回答
490 浏览

php - 致命错误:声明 Foo::__toString(): void 必须与 Stringable::__toString(): string 兼容

升级到 PHP 8 后,我现在看到Fatal error我的代码有什么问题?这是什么Stringable

0 投票
2 回答
4684 浏览

php - 捕获未知的命名参数错误

缺少参数的函数会引发ArgumentCountError错误

ArgumentCountError:函数的参数太少......

而未知的命名参数只会引发一般错误

错误:未知的命名参数...

我只想抓住这两个错误,到目前为止我有以下

我有什么替代方法?不应该Unknown named parameter得到它自己的错误。

编辑:

对于一个UnknownNamedParameterError用法