问题标签 [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.
php - 如何使用匹配表达式而不是 switch 表达式
我们可以在 PHP 8 中使用 match 表达式而不是 switch case。
如何为以下 switch 案例正确编写匹配表达式?
php - 即将到来的 PHP8 的扩展运算符和它预先存在的紧凑函数有什么区别?
compact()
即将到来的 PHP8 的扩展运算符和它的预先存在的函数有什么区别?
$data = new CustomerData(...$input);
php - 如何执行不区分大小写的 str_contains?
我的代码中有很多if(mb_stripos($hay, $needle) !== false)
。我该如何替换它str_contains()
?
例如,我的代码中有这个辅助函数:
如何使它与 new 一起使用str_contains()
?
php - PHP 8 开发中的 Laravel
我有一个带有 php 8.0.0-dev 和 composer 的 docker 容器。我想创建一个 Laravel 应用程序来测试新的 PHP,但我有一些错误。
当我尝试使用以下命令创建一个新的 laravel 项目时:
我得到的错误是我没有所需的 PHP,即使 php 8.0.0 大于 php 7.x。
我可以以某种方式跳过 php 版本检查吗?
我试过了
和
但我收到此错误:
任何的想法?
谢谢!!!
php - 警告:只有第一个字节将分配给字符串偏移量
以下代码在 PHP 7 中运行良好,为什么我在 PHP 8 中看到此警告?
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-apache
docker 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 上试过了。
php - 由命名参数和函数调用中的参数解包生成的错误在 PHP-8 中不抛出 ErrorException
以下代码按预期工作:抛出 ErrorException 并为由生成的致命错误调用关闭函数require
输出:
require(unavailable_file):无法打开流:没有这样的文件或目录
无论如何,你好世界
但是命名参数产生的致命错误无法调用异常处理程序和关闭函数
输出:
致命错误:无法组合命名参数和参数解包
将它们全部结合起来也没有按预期工作,并且没有捕获到ErrorException
fromrequire
输出:
致命错误:无法组合命名参数和参数解包
那么这是另一个错误还是我在这里遗漏了什么?
PS: PHP版本为8.0.0RC2(cli)
php - 不能使用 null 作为 PHP-8 中参数的默认值
在 php-8 和旧版本中,以下代码有效
但是在php-8中,随着属性提升,它会抛出一个错误
致命错误:不能使用 null 作为字符串类型的参数 $string 的默认值
虽然使字符串可以为空
那么这也是一个错误还是预期的行为?
php - 致命错误:声明 Foo::__toString(): void 必须与 Stringable::__toString(): string 兼容
升级到 PHP 8 后,我现在看到Fatal error
我的代码有什么问题?这是什么Stringable
?
php - 捕获未知的命名参数错误
缺少参数的函数会引发ArgumentCountError
错误
ArgumentCountError:函数的参数太少......
而未知的命名参数只会引发一般错误
错误:未知的命名参数...
我只想抓住这两个错误,到目前为止我有以下
我有什么替代方法?不应该Unknown named parameter
得到它自己的错误。
编辑:
对于一个UnknownNamedParameterError
用法