微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php8.0的新特性:类型系统的改进

1 新的Mixed伪类型

一.mixed定义

#mixed是PHP8中添加的伪类型,用于声明参数的类型、返回值、属性可以是任何类型。mixed包含了null类型、类对象、callable和resource类型.

function show(mixed $name){

var_dump($name);

}

show(true);

二.mixed与联合类型

#mixed等效于所有类型的联合类型

string|int|float|bool|null|array|object|callable|resource

三.禁止强类型转换

$foo = (mixed) $bar;

$name='user1';

echo (mixed)$name;

四.禁止与强他类型一起组合联合类型

string|int|mixed

function show(mixed|null $name){

var_dump($name);

}

show(true);

五.认类型

1.当函数参数或类属性未声明显式类型时,现在假定该类型为mixed

2.对于返回类型,缺少显式返回类型等于mixed|void,但不能人工设置mixed|void,因为mixed不能联合其他类型.

#PHP支持void伪返回类型,以指示该函数将不返回任何内容。这相当于缺少没有设置显式值得return语句.

#mxied返回类型

function show($name):mixed{

var_dump($name);

return 1;

}

echo show(true);#void返回类型

function show($name):void{

var_dump($name);

}

show(true);

六.禁止使用可空mixed类型

?mixed

function show(?mixed $name){

var_dump($name);

}

show(true);

2 Static类方法的返回类型

一.static类型作用

PHP 8.0允许static作为类方法的返回类型.

二.static语法

class Foo {

public static function getInstance(): static {

return new static();

}

}

三.仅返回类型

static返回类型仅允许作为返回类型。不允许将其作为属性类型或参数类型.

四.不允许在类外使用

只有类方法可以声明static返回类型。标准函数或闭包不允许声明static返回类型.

五.实用代码实例

1.对象链设计

class Person{

public function say(){

return $this;

}

public function show(){

return $this;

}

public function look(){

echo 'say->show->look->echo';

}

}

$obj=new Person;

$obj->say()->show()->look();2.类链设计

class Person{

public static function say():static{

return new static();

}

public static function show():static{

return new static();

}

public static function look(){

echo 'Person::say()::show()::look() echo';

}

}

Person::say()::show()::look();3.类输出静态方法中的类常量

class Person{

const HOST='localhost';

public static function say(){

return self::HOST;

}

}

echo Person::say();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐