问题标签 [php-7]
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-7 - PHP 的宇宙飞船运算符 <=> 如何处理无法比较的操作数?
PHP 7 中将添加 spaceship 运算符。我不确定它在某些边缘情况下是如何工作的。
$a <=> $b
将返回:
- 1如果 $a > $b
- 0如果 $a == $b
- -1如果 $a < $b
如果这些值不具有可比性,会发生什么?
可以比较哪些变量类型?
php - PHP 7 接口中的静态返回类型
为什么在 PHP 7 中不能声明具有static
返回类型的接口?
假设我有以下课程:
我想强制plus()
方法的返回类型为static
,即:
BigInteger::plus()
必须返回一个BigInteger
BigDecimal::plus()
必须返回一个BigDecimal
我可以通过以下方式声明接口:
但这并不能强制执行上述内容。我想做的是:
但迄今为止,PHP 7 对此并不满意:
PHP 解析错误:语法错误,意外的“静态”(T_STATIC)
是否有特定原因,或者这是一个应该报告的错误?
null-coalescing-operator - 空值合并运算符也可用于虚假值,但不能用于空值?
PHP 中新的null 合并运算符无疑是一个很棒的特性,有点类似于 JavaScript||
用于获取默认值的用法。
我已经阅读了一些有关此功能的文档和文章,但有些事情对我来说仍然不是很清楚。
1.我可以使用这个运算符与任意数量的操作数吗?例如,这是否有效?
$a = $p1 ?? $p2;
$b = $r1 ?? $r2 ?? $r3 ?? $r4 ?? $r5;
2.不为空的虚假值是怎么回事?
$test = false ?? 0 ?? 'test';
- 现在会怎样$test
?如果它不适用于 null 以外的虚假值,我们如何才能实现它像 JavaScript 一样工作||
?
php - PHP 7 Unicode 支持和平台无关
宣布PHP 7 支持“一致的 64 位”。这是什么意思?
PHP 7 是否支持类似于PHP 6 计划的Unicode (unicode.semantics
指令等)?如果没有,它什么时候会原生支持 Unicode?
php - 为什么 PHP7 上的 ElephantIO 无法识别我使用 OpenSSL 编译
我刚刚在带有标志的 Ubuntu 14.04 上编译了 PHP7 --with-openssl
,它完全可以运行。我用 Composer 安装了Elephant.io,但运行测试并收到此错误。
致命错误:在第 42 行的 /var/www/html/vendor/wisembly/elephant.io/src/Payload/Encoder.php 中调用未定义函数 ElephantIO\Payload\ openssl_random_pseudo_bytes()
这是我的测试代码。
这是我在编译 PHP7 之前运行的配置构建的命令。
我认为 Ubuntu 软件包就在那里。这是我的 openssh* 包!
openssh-client openssh-sftp-server openssl-blacklist openssh-server openssl openssl-blacklist-extra
有任何想法吗?我被困住了,对编译 PHP 很陌生。
php - 我必须使用 Zend 才能获得 PHP 7.0.0 版吗?
我刚刚访问php.net,看到他们刚刚发布了PHP 版本 7.0.0。我必须得到Zend
才能使用它还是我可以更新?
php - PHP 7 中的匿名类
我可以在哪里使用以及应该使用 PHP 7 中提供的匿名类?我找不到他们的用例。
php - 如果我声明为空白页(strict_types=1);在文件顶部的 PHP 7 中
最近我正在检查 PHP 7,特别是返回类型声明和类型提示。我已经从源代码(Github的 master 分支)编译 PHP 7 并在 Ubuntu 14.04 虚拟机中运行它。我尝试运行以下代码来测试新的Exceptions。但它给出了一个空白页。
然后我意识到我必须设置要在屏幕上显示的错误。所以我在下面添加了老式的ini_set('display_errors', 1);
,
TypeError
根据this Throwable interface RFC ,这给了我预期的关注
致命错误:未捕获的类型错误:test() 的返回值必须是字符串类型,在 /usr/share/nginx/html/test.php 中的第 7 行中返回的数组 /usr/share/nginx/html/test.php :7 堆栈跟踪:#0 /usr/share/nginx/html/test.php(10): test() #1 {main} 在第 7 行的 /usr/share/nginx/html/test.php 中抛出
进一步挖掘我declare(strict_types=1);
在顶部添加如下,
砰,错误就消失了,给我留下了空白页。我不知道为什么它给了我一个空白页?
php - 类型提示和多个构造函数
我一直在研究 PHP7 的新特性,并认为我可能会开始为我的项目准备它引入的新特性,比如标量类型提示。
我遇到的第一个问题是我在各种类中的构造函数。我有一些通用的委托人,它们的行为如下:
为这个方法引入类型提示当然会在各个方向抛出错误。
据我所知,PHP7 没有引入对多个构造函数的支持。有没有办法解决这个问题,或者这是语言的限制之一?
hhvm - HHVM 是否能够运行 PHP7
我知道 PHP7 有一个几乎和 HHVM 一样快的新编译器,但我只是好奇 HHVM 是否也能像 PHP5 一样运行 PHP7。
我找不到这方面的任何细节。我发现的所有东西都只是 HHVM 与 PHP7 的对比。同样,任何人都可以找到在 HHVM 上运行的 PHP5 版本。
谢谢