目录

一、数组和字符串直接表达式

二、新的密码加密函数

三、异常和finally关键字

四、生成器( Generator )

五、函数参数列表支持接收可变数量参数

六、幂运算,用来替代pow函数

七、定义数组常量

八、类型严格模式

九、新增运算符

十、除法除整商

十一、匿名类

十二、IntlChar类

十三、Closure::call

十四、命名空间成员的批量导入

十五、捕获错误信息

十六、session_start()中可动态设置项覆盖配置项

十七、生成器支持返回值

十八、生成器的委托


一、数组和字符串直接表达式

<?php
echo "hello world"[4];

二、新的密码加密函数

  • 该算法弊端在于会增加了数据库字段的容量,因为加密后的hash太长

<?php
$str = 'i am password';
//用户加密
$hash = password_hash($str, PASSWORD_BCRYPT);
//用于验证加密是否正确
password_verify($str, $hash);

三、异常和finally关键字

  • 异常处理语句由原来的 try-catch 新增了一个 finally语句块,适合用于写哪些不管是否异常最终都会执行的代码

<?php
try {$pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456');$msg = "开始正常执行";
} catch (Error $e) {$msg = "错误:" . $e->getMessage();
} catch (Exception $e) {$msg = "异常:" . $e->getMessage();
} finally {file_put_contents('error.log', $msg, FILE_APPEND);
}

四、生成器( Generator )

  • 生成器是专门了 处理大数组(大数据) 和 协程通信 而出现

<?php
function xrange($start, $end, $step=1)
{for ($i=$start; $i<$end; $i+=$step){yield $i;}
}foreach (xrange(0, 1000) as $item)
{echo $item;
}

五、函数参数列表支持接收可变数量参数

<?php
function test(...$args)
{print_r($args);
}test(1,2,3,4,5);

六、幂运算,用来替代pow函数

<?php
$pow = pow(2,10);
$replace = 2 ** 10;
var_dump($replace == $pow);

七、定义数组常量

<?php
const STATUS = ['ERROR' => 0,'SUCCESS' => 1
];STATUS['ERROR'];

八、类型严格模式

  • 函数参数类型限制
<?php
class test1 {}
class test2 {}function fun(test1 $obj) {}$t1 = new test1();
$t2 = new test2();fun($t1);
fun($t2); //会报错
  • 类型严格模式
<?php
function fun(int $a) {}fun('string'); //传入非int类型会报错
  • 函数返回值类型限定
<?php
function test():array
{return 888;
}test(); //会报错,约束返回数组,但是返回一个int

九、新增运算符

  • 飞船运算符
<?php
$num1 = 100;
$num2 = 200;
$num3 = 200;echo $num1 <=> $num2; //左边比右边小, -1
echo $num3 <=> $num1; //左边比右边大, 1
echo $num2 <=> $num3; //左右相等, 0
  • null合并运算符
<?php
echo $_GET['name'] ?? 'felix';

十、除法除整商

<?php
echo intdiv(14, 3); //返回整数部分

十一、匿名类

<?php
$nm = new class {public function say() {echo "i am saying";}
};
$nm->say();

十二、IntlChar类

  • 需要开启php_intl扩展
<?php
echo IntlChar::ord('A'); //获取A的ascii码65

十三、Closure::call

  • 允许我们把匿名函数临时挂到指定对象中,充当这个对象的类方法
<?php
class Test {private $name = 'felix';
}$test = new Test();$say = function() {echo $this->name;
};$say->call($test);
$say();

十四、命名空间成员的批量导入

<?php
use App\Course\{Common\Lesson,Base\Teacher
};new Lesson();
new Teacher();

十五、捕获错误信息

  • php7.0以后,PHP是不支持捕获错误,只能捕获异常
​<?php
try {$pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456');$msg = "开始正常执行";
} catch (Error $e) {$msg = "错误:" . $e->getMessage();
} catch (Exception $e) {$msg = "异常:" . $e->getMessage();
} finally {file_put_contents('error.log', $msg, FILE_APPEND);
}

十六、session_start()中可动态设置项覆盖配置项

  • session_start 原来的作用用来开启session

<?php
date_default_timezone_set("PRC");session_start(['save_path' => 'F:\Session','name' => 'FELIXSESSID','cookie_lifetime' => 3600
]);

十七、生成器支持返回值

<?php
function builder()
{yield '第1次调用生成器';yield '第2次调用生成器';yield '第3次调用生成器';yield '第4次调用生成器';return 'success';
}$builder = builder();foreach ($builder as $item)
{echo $item . '<br />';
}//如果7以下,一定会报错
if ($builder->getReturn() == 'success') {echo "程序执行完毕";
}

十八、生成器的委托

  • 生成器的委托操作,主要是把一个复杂的生成器分离成若干简单的生成器
<?php
function builder()
{yield '奥特之父发出指定';if (mt_rand(0, 1) == 0) {yield from tl();} else {yield from dj();}
}function tl()
{yield "泰罗你去打小怪兽";
}function dj()
{yield "迪迦你去打小怪兽";
}$builder  = builder();foreach ($builder as $item)
{echo "{$item}<br/>";
}

全网最全的 php7 新特性相关推荐

  1. 全网最全的 php8 新特性

    目录 一. 官方网站 二.命名参数 三.属性注解 四.构造器属性的提升 五.联合类型 六.match表达式 七.nullsafe运算符 八.字符串数字弱类型比较优化 九.函数错误一致性 十.JIT优化 ...

  2. php7 ast,PHP7新特性之抽象语法树(AST)带来的变化详解

    本文分析了PHP7新特性之抽象语法树(AST)带来的变化.分享给大家供大家参考,具体如下: 这里大部分内容参照 AST 的 RFC 文档而成:https://wiki.php.net/rfc/abst ...

  3. php7的新特性有哪些,php7新特性有哪些?

    php7新特性有:将PHPNG代码合并到PHP7中:降低内存消耗:标量类型声明,可以强制执行参数和返回类型:一致的64位支持:改进了异常层次:已弃用的SAPI和扩展被删除:添加了新的空合并运算符(?) ...

  4. PHP7新特性(常用)

    PHP7新特性(常用) 致命错误将可用异常形式抛出 ?? null合并运算符 标量类型声明 返回值类型声明 太空船操作符<=>(组合比较符) 致命错误将可用异常形式抛出 在php7之后,大 ...

  5. php7.4新特性 多线程,PHP7新特性WhatwillbeinPHP7/PHPNG

    PHP7将在2015年10月正式发布,我们来看看官网给出的php7 特性 官网: http://www.php7.ca/ https://wiki.php.com/phpng PHP7新特性( Wha ...

  6. 【PHP】PHP7新特性

    PHP7新特性 PHP7.0 PHP7.0新特性 PHP7.0 变化 PHP7.1 PHP7.1新特性 PHP7.1变化 PHP7.2 PHP7.2新特性 PHP7.2变更 PHP7.3 PHP7.3 ...

  7. PHP7新特性和废弃的函数

    一篇写给准备升级PHP7的小伙伴的文章 https://blog.csdn.net/u011957758/article/details/73320083 PHP7新特性 https://lvtao. ...

  8. PHPStorm使用PHP7新特性出现红色波浪错误

    今天在项目中使用PHP7新特性时PHPStorm出现了如下红色错误,看着让人很不舒服,明明没有错 本地配置LNMP的PHP版本是7.2所以不是安装的PHP版本过低的问题,而是PHPStorm默认支持的 ...

  9. php标量类型包括,php7新特性之标量类型声明

    标量类型声明 什么是标量类型?首先要清楚这一点,标量类型(Scalar type)是相对复合类型(Compound type)来说的:标量类型只能有一个值,而复合类型可以包含多个值.复合类型是由标量类 ...

最新文章

  1. C# “Thread类Suspend()与Resume()已过时” 解决方法(利用ManualResetEvent类)
  2. Python知道cos值求角度_Python——画一棵漂亮的樱花树
  3. CoreAnimation编程指南(六)动画
  4. 动态规划——最大子矩阵(hdu1081)
  5. mysql和python先学哪个_Python数据库操作 初识mysql和mysql基本操作#学习猿地
  6. Spring Boot 学习之,数据库三 ,事务
  7. php html页面获取session,怎么在html中获取session变量
  8. 第12章 数据库完整性
  9. hive 复合结构Map、Struct详解
  10. ActivityManager Displayed 源码位置
  11. rfc2544_tput_test脚本中增加丢包率功能
  12. Postman使用详解
  13. ⚡【图像描述】pytorch_image_caption
  14. 妮可妮可妮 [Hash]
  15. 鸡兔同笼php语言,鸡兔同笼(C语言代码)
  16. 威斯康星大学硕士计算机科学,2020年威斯康星大学密尔沃基分校排名TFE Times美国最佳计算机科学硕士专业排名第90...
  17. 产品设计三大文档PRD,BRD,MRD
  18. vue watch监听数据解决新旧值一样的问题(newValue, oldValue)
  19. 新鲜出炉!由腾讯安全深度参编的“首份网络安全态势感知国家标准”发布
  20. ATmega16开发板教程(4)——定时器

热门文章

  1. 高斯型数值积分公式的Python程序
  2. 深入理解面向discuz的插件开发
  3. Jmeter 压力测试 - Http2.0工具下载慢解决思路-【问题篇】
  4. C#编程中的数据库的连接字符串
  5. Primas与币乎,孰轻孰重
  6. [kpw] Kindle Paperwhite被强制升级到5.6.5后,USBNetwork无法使用
  7. java 监听配置文件_java读取系统Properties配置文件利用线程实时监控配置文件变化...
  8. 幼师资格证计算机考试内容,幼师资格证考试科目有哪些
  9. 直播预告| 一次实用的“企业级开源大数据平台上层应用”指南
  10. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——2.4 将音乐CD转换成WAV、MP3...