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|mixedfunction show(mixed|null $name){ var_dump($name);}show(true);五.默认类型1.当函数参数或类属性未声明显式类型时,现在假定该类型为mixed2.对于返回类型,缺少显式返回类型等于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();