PHP7新特性简述
发布时间 - 2026-01-11 01:49:38 点击率:次类型声明

看代码,一目了然了。
class person
{
public function age(int $age) : string
{
return 'Age is ' . $age;
}
}
命名空间与use关键字批量声明
非混合模式
use Publishers\Packt\{ Book, Ebook, Video};
use function Publishers\Packt\{ getBook, saveBook };
use const Publishers\Packt\{ COUNT, KEY };
混合模式
use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
};
复合模式
use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
};
匿名类
匿名类的声明与使用时同时进行的,具备其他类所具备的所以功能,区别在于匿名类没有类名。语法如下:
new class(argument) { definition };
匿名类是没有类名的,但在PHP内部,会在内存的引用地址表中为其分配一个全局唯一的名称。
$name = new class('You') {
public function __construct($name)
{
echo $name;
}
};
匿名类可以继承父类及父类的方法。
class Packt
{
protected $number;
public function __construct()
{
echo 'parent construct';
}
public function getNumber() : float
{
return $this->number;
}
}
$number = new class(5) extends Packt
{
public function __construct(float $number)
{
parent::__construct();
$this->number = $number;
}
};
echo $number->getNumber();
匿名类可以继承接口。
interface Publishers
{
public function __construct(string name, string address);
public function getName();
public function getAddress();
}
class packt
{
protected $number;
protected $name;
protected $address;
public function ...
}
$info = new class('name', 'address') extends Packt implement Publishers
{
public function __construct(string $name, string $address)
{
$this->name = $name;
$this->address = $address;
}
public function getName() : string
{
return $this->name;
}
public function getAddress() : string
{
return $this->address;
}
}
echo $info->getName() . ' ' . $info->getAddress();
匿名类可以嵌套在一个类中使用。
class Math
{
public $first_number = 10;
public $second_number = 10;
public function add() : float
{
return $this->first_number + $this->second_number;
}
public function mutiply_sum()
{
return new class() extends Math
{
public function mutiply(float $third_number) : float
{
return $this->add() * $third_number;
}
};
}
}
$math = new Math();
echo $math->mutiply_sum()->mutiply(2);
摒弃老式构造函数
从PHP4开始,构造函数可以通过命名与类名一致的方式来声明自己是构造函数,在PHP7中这种方式声明构造函数依然可以使用,但不推荐使用,会输出不推荐的信息 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...,PHP7中推荐使用 __construct()。
throwable接口
从PHP7开始,程序中的fatal错误都可以被截获,PHP7提供了throwable接口,异常与错误都继承于这个接口。
Error
现在大多数的fatal错误情况会抛出一个error实例,类似于截获异常,error实例可以被try/catch截获。
try
{
...
} catch(Error $e)
{
echo $e->getMessage();
}
一些错误情况只有error的子实例会被抛出,例如 TypeError、DivisionByZeroError、ParseError等。
<=>操作符
<=>操作符将==、<、>三个比较操作符打包在了一起,具体使用规则如下。
操作符两边相等时返回 0
操作符左边小于右边时返回 -1
操作符左边大于右边时返回 1
null合并运算符
?? 合并运算符,在第一操作数存在时可被直接返回,否则返回第二操作数。
$title = $post['title'] ?? NULL; $title = $post['title'] ?? $get['title'] ?? 'No title';
uniform变量语法
$first = ['name' => 'second'];
$second = 'two';
echo $$first['name'];
echo ${Sfirst['name']}; // PHP7
...
echo $object->$methods['title'];
echo $object->{$methods['title']}; // PHP7
主要是因为PHP7与之前版本PHP的解析方式不一样,在PHP7中加上花括号就可以啦,就像上边代码这样,否则会报错。
常量数组
从PHP5.6开始常量数组可以用const关键字来声明,在PHP7中常量数组可以通过define函数来初始化。
const STORES = ['en', 'fr', 'ar']; // php5.6
define('STORES', ['en', 'fr', 'ar']); // php7
switch中的default默认值
在PHP7之前,switch语句中允许多个default默认值,从PHP7开始,只能有一个default默认值,否则会产生fatal级别错误。
// php7之前
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
default:
# code...
break;
}
// php7
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
}
session_start函数中的选项数组
在PHP7之前,使用session的时候都必须先调用session_start()函数,且这个函数并没有参数需要传递,所有session相关的配置都在php.ini文件中,从PHP7开始,可以在调用这个函数时传递参数选项数组,这些设置信息将覆盖php.ini中的session配置。
session_start([ 'cookie_lifetime' => 3600, 'read_and_close' => true ]);
unserialize函数引入过滤器
unserialize()可以反序列化任何类型的对象,没有任何过滤项,不安全,PHP7在unserialize()中引入了过滤器,且默认允许反序列化所有类型的对象。
$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);
以上所述是小编给大家介绍的PHP7新特性简述,希望对大家有所帮助!
# php7
# 新特征
# 简述PHP7.4 新特性和废弃的功能
# php5.6.x到php7.0.x特性小结
# php7新特性的理解和比较总结
# PHP7新特性之抽象语法树(AST)带来的变化详解
# php7函数
# 声明
# 返回值等新特性介绍
# PHP7 新特性详细介绍
# PHP7新特性foreach 修改示例介绍
# 浅谈php7的重大新特性
# PHP7中新添特性整理
# 默认值
# 推荐使用
# 可以通过
# 则会
# 抛出
# 运算符
# 序列化
# 是因为
# 就像
# 都在
# 多个
# 没有任何
# 可以用
# 但在
# 会在
# 给大家
# 为其
# 可以使用
# 报错
# 但不
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
如何快速配置高效服务器建站软件?
海南网站制作公司有哪些,海口网是哪家的?
如何选择可靠的免备案建站服务器?
青岛网站建设如何选择本地服务器?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel如何实现多对多模型关联?(Eloquent教程)
Laravel中的withCount方法怎么高效统计关联模型数量
如何在宝塔面板中修改默认建站目录?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Java解压缩zip - 解压缩多个文件或文件夹实例
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
昵图网官网入口 昵图网素材平台官方入口
如何注册花生壳免费域名并搭建个人网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
黑客如何通过漏洞一步步攻陷网站服务器?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel如何使用Service Container和依赖注入?(代码示例)
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何用虚拟主机快速搭建网站?详细步骤解析
非常酷的网站设计制作软件,酷培ai教育官方网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
Laravel如何使用withoutEvents方法临时禁用模型事件
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
html5的keygen标签为什么废弃_替代方案说明【解答】
如何快速搭建自助建站会员专属系统?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
java获取注册ip实例
如何快速搭建支持数据库操作的智能建站平台?
如何批量查询域名的建站时间记录?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
*服务器网站为何频现安全漏洞?
如何打造高效商业网站?建站目的决定转化率
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Linux网络带宽限制_tc配置实践解析【教程】
javascript如何操作浏览器历史记录_怎样实现无刷新导航
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Android GridView 滑动条设置一直显示状态(推荐)
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
活动邀请函制作网站有哪些,活动邀请函文案?
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】

