问题标签 [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 - PHP 8 中的 debug_backtrace() 是否被削弱了?
在准备更新到 PHP 8 时,一旦他们发布了超出损坏的 8.0.0 的新版本(由于据称现在已修补的 IMAP 错误,我不得不降级回 7.4.x),我读到以下内容:
debug_backtrace() 和 Exception::getTrace() 将不再提供对参数的引用。无法通过回溯更改函数参数。
来源:https ://www.php.net/manual/en/migration80.incompatible.php
但是,没有提及:https ://www.php.net/debug_backtrace
我依赖于debug_backtrace()
我的自定义错误记录器功能。我制作了自己的错误记录器,因为我发现 PHP 提供的标准错误记录器完全没用,总是让我想知道到底是什么错误,浪费了我这么多的时间来寻找错误实际发生的位置。
我自己的错误记录器(以及其他功能)显示发送到函数的所有参数(或片段,如果它们太长)。
我是否正确理解 PHP 8 取消了这种能力?如果是这样,有什么可能的原因来删除这个关键的核心功能?
我希望我只是误读了这个。
php - Laravel 应用程序在升级到 php 8 后停止工作
将我的 mac 更新到 php 8 laravel 应用程序停止工作后,这是我得到的错误:
我试图通过调查没有运气的代码来解决这个问题
php - MongoDB\Driver\Cursor::current() 什么都不返回,但它应该
我在 PHP 8 上。
var_dump(get_class($usernameInDb));
返回string(21) "MongoDB\Driver\Cursor"
var_dump($usernameInDb);
表明有文件。
$avirer = $usernameInDb->current();
不会在 error.log 中导致 PHP 错误。
var_dump($avirer);
返回int(8) string(26) "Undefined variable: avirer"
在我看来,这与文档相矛盾
有人知道发生了什么吗?
php - 将 PHP 升级到 8.0 后如何修复 laravel/ui 错误以升级 Laravel
在使用 macos 将 PHP 升级到 8.0 后,我正在尝试升级 Laravel brew
,但出现以下错误。我应该如何解决?
=== 编辑 2020-12-10 ===
composer.json
:
以下
php - 将命名参数传递给带有可变参数的内部函数时遇到问题
我玩了一下 php 的 array_map 函数,并考虑将它与命名参数一起使用,因为参数顺序总是让我恼火。(这些功能没有做任何有用的事情。只是需要一些东西来测试。)
到目前为止一切顺利,这是按预期工作的:
(即使我需要一些时间来弄清楚数组参数的名称,因为它array1
在德国文档中被记录。但这是一些事情,我会在有时间的时候立即研究。)
但是后来我尝试使用更多参数调用该函数。
所以,我的第一次尝试:
致命错误:在命名参数之后不能使用位置参数
我了解到我不能在命名参数之后传递位置参数。
然后反过来:
致命错误:未捕获的错误:命名参数 $callback 覆盖以前的参数
好的。它将第一个参数作为第一个位置参数并且在我覆盖它时感到困惑。
我开始用谷歌搜索。好的,未知的命名参数被传递给可变参数。让我们尝试一下:
致命错误:未捕获的 ArgumentCountError:array_map() 不接受未知的命名参数
那么……有没有办法做到这一点?我什至访问了关于命名参数的 rfc,但没有找到任何看起来像解决方案的东西。各位大神能不能给个提示啊,怎么做?
php - 无法在 PHP 的 docker 映像中安装 JSON 扩展
我最近开始将我的项目从 PHP 7.4 升级到 8.0,并且我目前正在尝试将我的所有 Docker 映像也重建到 PHP 8.0,以便我的映像和我的环境是连贯的。
在此升级之前,我使用的是php:7.4
Dockerfile,在我的 Dockerfile 中,我有这一行用于扩展安装:
今天,相同的命令对 JSON 有效,但出现以下错误:
我在 Stack Overflow 或一般网络上找不到其他有此问题的人,所以...名称是否已更改,还是不再需要?或者它甚至是正常的?
php - PHP 8:是否可以在类外更改类?
我对OOP非常缺乏经验。
我正在创建一个 MVC 框架作为练习。我希望能够将外部类自动加载到主控制器的属性中(基于特定设置)。为了使这个问题更简单,如何从类外部添加属性/方法?
我有这堂课:
我想从类外部添加一个属性(即:$second_property),而不必创建实例。PHP 8可以吗?
php - 必需参数 $xxx 跟在可选参数 $yyy 之后
自从升级到 PHP 8.0 后,在运行如下代码时会引发此错误:
这在过去的 PHP 版本中有效,没有问题。
php - 如何仅使用语法检查器输出检查 PHP 版本
我希望我团队的每个成员(可靠地)报告他们正在检查其语法的 PHP 版本。我的团队成员拥有各种操作系统、IDE 和文本编辑器,以及各种 PHP 语法检查器插件,以及php
具有不同版本的多个可执行文件。例如,要求他们运行php -v
,可能会向他们的编辑器用于语法检查的版本报告不同的版本。
我开始研究版本之间语言语法的变化,我的想法是我可以编写一个 PHP 文件,该文件将在不同版本中触发不同的语法错误。例如,在 PHP 8.0 中,match
现在是保留关键字。此代码在 7.4 中有效,并unexpected token ";"
在 8.0 中触发:
是否可以通过在文本编辑器中检查其语法来推断可执行文件的版本号的方式编写 PHP 文件php
?