酆叔のBlog

  • 首页
  • 分享技术
  • 八卦黑料
  • 生活日常
  • 日记
酆叔のBlog
上辈子作恶多端,这辈子早起上班。
  1. 首页
  2. IT技术
  3. 正文

PHP7特性

2023年6月16日 836点热度 0人点赞 0条评论

1.标量类型声明

两种模式,一种默认模式,一种强制模式(严格模式)。

默认模式:可以进行类型推导,自动转化。

强制模式(严格模式):就是必须是声明的类型,否则会报错,

2.返回值类型声明 

/** * ?array 表示必须传入数组或者null,否则报错 * : ?array 表示返回必须是数组或者null,否则报错 */ function arraysSum(?array $arrays): ?array { return $arrays; } var_dump(arraysSum([6]));

3.太空船操作符

太空船操作符用于比较两个表达式。 当$a小于、等于或大于$b时它分别返回-1、0或1。 比较的原则是沿用 PHP 的常规比较规则进行的。

4.匿名类

// 支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义。 <?php 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()); ?>

5.namespace 导入的类

// PHP 7 之前的代码
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
 
use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;
 
use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;
 
// PHP 7+ 及更高版本的代码
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};

6.异常和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);
}

7.null合并运算符

$a ?? 0 等同于 isset($a) ? $a : 0
 
$a ?: 0 等同于 $a ? $a : 0
 
empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)
 
isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)

8.定义数组常量

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

// define()定义常量数组
define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);
 
echo ANIMALS[1]; // 输出 "cat

9.异常捕获

// 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);
}

10.新的对象类型

// 这种新的对象类型object, 引进了可用于逆变(contravariant)参数输入和协变(covariant)返回任何对象类型。
<?php
function test(object $obj) : object
{
    return new SplQueue();
}
 
test(new StdClass());

11.变量处理机制修改

对变量、属性和方法的间接调用现在将严格遵循从左到右的顺序来解析,而不是之前的混杂着几个特殊案例的情况。

标签: PHP
最后更新:2024年5月10日

酆叔

上辈子作恶多端,这辈子早起上班。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
2025/05/15 周四 晴 2025/05/12 周一 晴 2025/05/08 周四 多云 2025/05/07 周三 阵雨 2025/05/06 周二 阵雨 2025/04/30 周三 多云
策略模式 GO 常量和变量 PHP7特性 认识PHP(四)变量 观察者模式 认识PHP(七)类和对象的基本概念
腾讯云
又拍云
订阅
订阅

COPYRIGHT © 2024 酆叔のBlog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备2023016219号