问题标签 [php-8.1]
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 枚举是否包含大小写,例如基本(非支持)枚举的 try() 方法
我有基本的枚举
以及一些使用该枚举键入的函数:
和具有未知内容的变量
我在文档中找不到检查枚举是否包含特定情况的简单方法。
像这样的支持枚举是可能的
这将起作用,但from
在我的第一个示例中的非支持枚举上不存在。
php-8.1 - PHP 纤维和内存
据我所知,PHP 将类加载到内存中并且从不释放它们。这在使用属性时可能会出现问题。
我想知道是否可以使用纤维。光纤的独立性如何?最终的问题是:如果一个 PHP 纤程加载一个类,它会自动加载到 PHP 代码的其余部分,还是一个单独的内存空间?
php - PHP 8.1.1 PDO 驱动程序未加载
为什么 PHP 8.1.1 不使用 Apache 2.4.52 加载 PDO 驱动程序,即使模块已加载到 PHP CLI 上?
我正在运行一个 windows 11 64 位系统,我从 https://www.apachehaus.com/cgi-bin/download 尝试了 Apache/2.4.52 (Win64) (Apache 2.4 VS16) 和 Apache 2.4.x OpenSSL 1.1.1 VC15 。 plx#MODULES24VS16。
我也从上面的站点安装了 Microsoft Visual C++ 2019 Redistributable (VS16)。我从https://windows.php.net/download#php-8.1安装了 PHP 8-1.1 VS16 x64 Thread Safe (2021-Dec-15 11:08:34) 。
我启用了扩展(未注释)。
现在的问题:
在 Apache 2.4 VS16 版本中,Apache 未启动 httpd.exe -t 无法将 c:\php-8.1.1\php8apache2_4.dll 加载到服务器中:%1 不是有效的 Win32 应用程序。
httpd.conf 上的配置:
在 Apache VC15 服务器启动但 PDO 驱动程序未加载 phpinfo() PDO 驱动程序无值 curl 未加载 pgsql 未加载
php cli 正在工作。
php - 将主机升级到 php 8.1 后的 Laravel 问题
下面是修改后的代码,在 `composer update.
PHP 8.1.1 (cli) (built: Dec 15 2021 04:17:42) (NTS) 版权所有 (c) The PHP Group Zend Engine v4.1.1, 版权所有 (c) Zend Technologies
这是错误日志:
请给我一个解决这个问题的方法。
php - 自制安装后的PHP版本问题
MacOS 12.1 使用自制软件(以及 apache/mySQL 和 phpmyadmin)成功安装 php 8.1 后,我尝试安装/链接 php 7.4 失败。按照说明安装、取消链接、链接后, php -v 返回 7.4 但 phpinfo() 显示 8.1。我究竟做错了什么?
php - 您如何访问枚举案例的属性?
根据RFC on Enumerations,可以通过使用将属性添加到案例中Attribute::TARGET_CLASS_CONSTANT
。(实际上,RFC 说TARGET_CLASS_CONST
,但这要么是错字,要么是后来的更改。)但是,我在尝试使用反射访问它们时遇到了麻烦。
鉴于此设置:
我希望下面的代码给我一个具有单个属性的数组,但是它返回一个空数组。
此处演示:https ://3v4l.org/uLDVQ#v8.1.2
我在PHP src中找到了一个测试用例,但是用法不是我所期望的。我需要分解它,而不是使用实例:
此处演示:https ://3v4l.org/BsA9r#v8.1.2
我可以使用这种格式,但感觉真的很hacky,因为我几乎在反射中使用反射:
此处演示:https ://3v4l.org/YY6Oa#v8.1.2
具体来说,该new \ReflectionClassConstant($obj::class, $obj->name)
模式似乎奇怪的样板。
是否有另一种方法可以访问我缺少的单个枚举案例属性?
php - 来自 PHP 8.1 的 vscode + PHP intelephense 命名参数显示为错误
在用 PHP8.1 编写的代码中,我在方法调用中使用命名参数:
但是扩展 PHP Intelephene 显示 2 个错误:
Undefined constant 'App\Some\Namespace\name'.intelephense(1011)
和Unexpected ':'.intelephense(1001)
我已经尝试过(没有成功):
- 全系统安装 PHP8.1 并将其设置为默认版本(cli 版本 PHP 8.1.2)
- 为用户和工作区设置这些
-
"intelephense.environment.phpVersion": "8.1.2",
-
"php.validate.executablePath": "/usr/bin/php8.1",
- 重启(完全关闭 vscode 并再次重新打开工作区文件夹)
编辑/回答 - 将您的 VSCODE 更新为最新!
如果您不确定在哪里可以找到 - 请查看帮助 > 关于,然后查看 vscode 更新网站。最后的问题实际上是一个过时的 Visual Studio Code 问题,导致扩展无法正确更新。这怎么发生的?我不小心使用了没有自我更新的 vscode,apt install code
它可以与 snap 版本一起安装 - 对于 ubuntu,解决方案是删除 apt 代码并只保留 snap 版本或安装它sudo snap install --classic code
- 感谢https: //askubuntu.com/a/1217734/277898让我实现 x)
php - Uncaught TypeError: sqlsrv_fetch_array() 错误,因为升级到 PHP8.1
今天我升级到php8.1,从那以后我遇到了以下问题。我运行以下查询:
然后我想遍历数组并输出数据:
到目前为止,这一直有效(php7.2)。自从升级以来,不幸的是,这只有时有效。有时它运行没有问题,有时我在日志中收到以下错误:
平均而言,我每执行 5 次就会收到一次错误。
作为requestet完整的代码: