广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买
PHP 标量类型与返回值类型声明1、PHP 标量类型与返回值类型声明
2、PHP NULL 合并运算符
3、PHP 太空船运算符(组合比较符)
4、PHP 常量数组
5、PHP 匿名类
6、PHP Closure::call()
7、PHP 过滤 unserialize()
8、PHP IntlChar()
9、PHP CSPRNG
10、PHP 7 异常
11、PHP 7 use 语句
12、PHP 7 错误处理
13、PHP intp() 函数
14、PHP 7 Session 选项
15、PHP 7 废弃特性
16、PHP 7 移除的扩展
17、PHP 7 移除的 SAPI
标量类型声明
强制模式
declare(strict_types=1) <?php // 强制模式 function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序执行输出结果为:9复制代码登录后复制
严格模式
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……复制代码登录后复制PHP NULL 合并运算符
以前的三元运算
$site = isset($_GET['site']) ? $_GET['site'] : '菜鸟教程';复制代码登录后复制
现在的合并运算符
$site = $_GET['site'] ?? '菜鸟教程';复制代码登录后复制
以上2种方法是一样的
以下是实例:
<?php// 获取 $_GET['site'] 的值,如果不存在返回 '高压锅'$site = $_GET['site'] ?? '高压锅';print($site);print(PHP_EOL); // PHP_EOL 为换行符// 以上代码等价于$site = isset($_GET['site']) ? $_GET['site'] : '高压锅';print($site);print(PHP_EOL);// ?? 链$site = $_GET['site'] ?? $_POST['site'] ?? '高压锅';print($site);?>复制代码登录后复制组合比较符,又称太空船运算符
PHP 7 新增加的太空船运算符(组合比较符)用于比较两个表达式 $a 和 $b,如果 $a 小于、等于或大于 $b时,它分别返回-1、0或1。
以下是实例
<?php// 整型比较print( 1 <=> 1);print(PHP_EOL);print( 1 <=> 2);print(PHP_EOL);print( 2 <=> 1);print(PHP_EOL);print(PHP_EOL); // PHP_EOL 为换行符// 浮点型比较print( 1.5 <=> 1.5);print(PHP_EOL);print( 1.5 <=> 2.5);print(PHP_EOL);print( 2.5 <=> 1.5);print(PHP_EOL);print(PHP_EOL);// 字符串比较print( "a" <=> "a");print(PHP_EOL);print( "a" <=> "b");print(PHP_EOL);print( "b" <=> "a");print(PHP_EOL);?>复制代码登录后复制
以上结果分别为复制代码登录后复制
0-110-110-11复制代码登录后复制PHP 常量数组
以前定义常量数组 只能有 const;
现在定义常量数组可以使用 define();
以下是实例:
// 使用 define 函数来定义数组define('sites', [ 'Google', 'Runoob', 'Taobao']);print(sites[1]);?>以上程序执行输出结果为:Runoob复制代码登录后复制PHP 匿名类
PHP 7 支持通过 new class 来实例化一个匿名类,这可以用来替代一些"用后即焚"的完整类定义。
以下是实例:
<?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; // 使用 new class 创建匿名类 $app->setLogger(new class implements Logger { public function log(string $msg) { print($msg); } }); $app->getLogger()->log("我的第一条日志"); ?>以上程序执行输出结果为:我的第一条日志复制代码登录后复制php Closure::call()
PHP 7 的 Closure::call()
有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数。
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……复制代码0登录后复制PHP 过滤 unserialize()
PHP 7 增加了可以为 unserialize()
提供过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据。
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……复制代码1登录后复制
PHP CSPRNG 伪随机数生成器注意 以上特性是
unserialize()
里面多了一个参数选择 allowed_classes
CSPRNG(Cryptographically Secure Pseudo-Random Number Generator,伪随机数产生器)。
PHP 7 通过引入几个 CSPRNG 函数提供一种简单的机制来生成密码学上强壮的随机数。
random_bytes() - 加密生存被保护的伪随机字符串。
random_int() - 加密生存被保护的伪随机整数。
综上 类似于原先的 rand()
和 'mt_rand()'; 只不过 现在random_bytes()生成的是随机字符串
PHP 7 异常用于向下兼容及增强旧的assert()
函数。它能在生产环境中实现零成本的断言,并且提供抛出自定义异常及错误的能力。
老版本的API出于兼容目的将继续被维护。
assert()现在是一个语言结构,它允许第一个参数是一个表达式,而不仅仅是一个待计算的 string或一个待测试的boolean。
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……复制代码2登录后复制
还有参数类型
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……复制代码3登录后复制PHP 7 use 语句
PHP 7 可以使用一个 use 从同一个 namespace 中导入类、函数和常量:
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……复制代码4登录后复制
推荐教程:《php教程》
以上就是一起看看php7新特性的详细内容,更多请关注9543建站博客其它相关文章!
发表评论