您的位置 首页 php

最全的PHP7新特性

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

  1. <?php
  2. echo “hello world”[4];

二、新的密码加密函数

  • 该算法弊端在于会增加了数据库字段的容量,因为加密后的hash太长
  1. <?php
  2. $str = ‘i am password’;
  3. //用户加密
  4. $hash = password_hash($str, PASSWORD_BCRYPT);
  5. //用于验证加密是否正确
  6. password_verify($str, $hash);

三、异常和finally关键字

  • 异常处理语句由原来的 try-catch 新增了一个 finally语句块,适合用于写哪些不管是否异常最终都会执行的代码
  1. <?php
  2. try {
  3. $pdo = new PDO(‘mysql:host= localhost ;dbname=test;’, ‘root’, ‘123456’);
  4. $ msg = “开始正常执行”;
  5. } catch (Error $e) {
  6. $msg = “错误:” . $e-> getMessage ();
  7. } catch ( Exception $e) {
  8. $msg = “异常:” . $e->getMessage();
  9. } finally {
  10. file_put_contents(‘error.log’, $msg, FILE_APPEND);
  11. }

四、生成器( Generator )

  • 生成器是专门了 处理大数组(大数据) 和 协程通信 而出现
  1. <?php
  2. function xrange($start, $end, $step=1)
  3. {
  4. for ($i=$start; $i<$end; $i+=$step)
  5. {
  6. yield $i;
  7. }
  8. }
  9. foreach (xrange(0, 1000) as $item)
  10. {
  11. echo $item;
  12. }

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

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

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

  1. <?php
  2. $pow = pow(2,10);
  3. $ replace = 2 ** 10;
  4. var_dump($replace == $pow);

七、定义数组常量

  1. <?php
  2. const STATUS = [
  3. ‘ERROR’ => 0,
  4. ‘SUCCESS’ => 1
  5. ];
  6. STATUS[‘ERROR’];

八、类型严格模式

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

九、新增 运算符

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

十、除法除整商

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

十一、匿名类

  1. <?php
  2. $nm = new class {
  3. public function say() {
  4. echo “i am saying”;
  5. }
  6. };
  7. $nm->say();

十二、IntlChar类

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

十三、Closure::call

  • 允许我们把匿名函数临时挂到指定对象中,充当这个对象的类方法
  1. <?php
  2. class Test {
  3. private $name = ‘felix’;
  4. }
  5. $test = new Test();
  6. $say = function() {
  7. echo $this->name;
  8. };
  9. $say->call($test);
  10. $say();

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

  1. <?php
  2. use App\Course\{
  3. Common\Lesson,
  4. Base\Teacher
  5. };
  6. new Lesson();
  7. new Teacher();

十五、捕获错误信息

  • php7.0以后,PHP是不支持捕获错误,只能捕获异常
  1. ​<?php
  2. try {
  3. $pdo = new PDO(‘mysql:host=localhost;dbname=test;’, ‘root’, ‘123456’);
  4. $msg = “开始正常执行”;
  5. } catch (Error $e) {
  6. $msg = “错误:” . $e->getMessage();
  7. } catch (Exception $e) {
  8. $msg = “异常:” . $e->getMessage();
  9. } finally {
  10. file_put_contents(‘error.log’, $msg, FILE_APPEND);
  11. }

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

  • session_start 原来的作用用来开启session
  1. <?php
  2. date_default_timezone_set(“PRC”);
  3. session_start([
  4. ‘save_path’ => ‘F:\Session’,
  5. ‘name’ => ‘FELIXSESSID’,
  6. ‘cookie_lifetime’ => 3600
  7. ]);

十七、生成器支持返回值

  1. <?php
  2. function builder()
  3. {
  4. yield ‘第1次调用生成器’;
  5. yield ‘第2次调用生成器’;
  6. yield ‘第3次调用生成器’;
  7. yield ‘第4次调用生成器’;
  8. return ‘success’;
  9. }
  10. $builder = builder();
  11. foreach ($builder as $item)
  12. {
  13. echo $item . ‘<br />’;
  14. }
  15. //如果7以下,一定会报错
  16. if ($builder->getReturn() == ‘success’) {
  17. echo “程序执行完毕”;
  18. }

十八、生成器的委托

  • 生成器的委托操作,主要是把一个复杂的生成器分离成若干简单的生成器
  1. <?php
  2. function builder()
  3. {
  4. yield ‘奥特之父发出指定’;
  5. if (mt_rand(0, 1) == 0) {
  6. yield from tl();
  7. } else {
  8. yield from dj();
  9. }
  10. }
  11. function tl()
  12. {
  13. yield “泰罗你去打小怪兽”;
  14. }
  15. function dj()
  16. {
  17. yield “迪迦你去打小怪兽”;
  18. }
  19. $builder = builder();
  20. foreach ($builder as $item)
  21. {
  22. echo “{$item}<br/>”;
  23. }

文章来源:智云一二三科技

文章标题:最全的PHP7新特性

文章地址:https://www.zhihuclub.com/77167.shtml

关于作者: 智云科技

热门文章

网站地图