+
95
-

回答

PHP7有更多的新特性,更好的性能,更高的速度,PHP7比PHP5.0性能提升了两倍。

那么php7相对于php5新增了哪些特性,同时移除了哪些api呢

新增了

1、新增了强类型模式。

<?php
declare(strict_types=1);
就进入严格模式,参数必须符合规定(必须传入指定数据类型的值),不然报错。

2、新增了null合并运算符。

<?php
//php 7+这样写
$username = $user ?? 'nobody';

//php version < 7 得这样使用:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

3、新增加了结合比较运算符。

<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1


4、新增加了函数的返回类型声明。

<?php
function returnInfo ($a) : array {
return $a;
}
var_dump(returnInfo([1,2,3]));

5、新增加了通过define()定义常量数组。

<?php
define ('AWS' , [12,33,44,55]);

6、新增加匿名类。

<?php

interface Logger {

public function log(string $msg);

}

class Application {

private $logger;

public function getLogger(): Logger {

return $this->logger;

}

public function setLogger(Logger $logger) {

$this->logger = $logger;

}

}

$app = new Application;

$app->setLogger(new class implements Logger {

public function log(string $msg) {

echo $msg;

}

});

var_dump($app->getLogger());


移除了

1、移除了 mysql 扩展。

2、移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。

3、移除了PHP4 风格的构造函数,PHP4 风格的构造函数(方法名和类名一样)将被弃用,并在将来移除。 如果在类中仅使用了 PHP4 风格的构造函数,PHP7 会产生 E_DEPRECATED 警告。 如果还定义了 __construct() 方法则不受影响。

<?php
class foo {
function foo() {
echo 'I am the constructor';
}
}
?>

4、废弃了 静态(Static) 调用未声明成 static 的方法,未来可能会彻底移除该功能。

<?php
class foo {
function bar() {
echo 'I am not static!';
}
}

foo::bar();
?>

以上例程会输出:

5、废弃了 password_hash() 函数中的盐值选项,阻止开发者生成自己的盐值(通常更不安全)。 开发者不传该值时,该函数自己会生成密码学安全的盐值。因此再无必要传入自己自定义的盐值。

capture_session_meta SSL 上下文选项

废弃了 capture_session_meta 内的 SSL 上下文选项。 现在可以通过 stream_get_meta_data() 获取 SSL 元数据(metadata)。

6、LDAP 中的废弃以下函数已被废弃:ldap_sort()

7. 移除了ereg_* 系列的正则函数


网友回复

我知道答案,我要回答