• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

PHP8 类的新特性

Data: 2019-07-30 06:54:30Form: JournalClick: 20

# PHP8 类的新特性


# 一、构造器属性提升

<?php
    namespace phpcn;
    class Teacher{
        public $name;
        public $school;
        // 构造方法
        public function __construct($name, $school){
            $this->name = $name;
            $this->school = $school;
        }
        public function fun(){
            // 在类中使用伪变量: "$this" 引用当前类的成员变量
            return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
        }
    }
    // 实例化
    $obj = new Teacher('灭绝师太','PHP中文网');
    echo $obj->fun();
  • 更少的样板代码来定义并初始化属性
<?php
    namespace phpcn;
    class Teacher{
        // 构造方法
        public function __construct(
            public $name,
            public $school
        ){

        }
        public function fun(){
            // 在类中使用伪变量: "$this" 引用当前类的成员变量
            return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
        }
    }
    // 实例化
    $obj = new Teacher('西门大官人','PHP中文网');
    echo $obj->fun();

# 二、联合类型

类型描述
bool布尔型:truefalse
int整型:负数 - 0 - 无限大
float浮点型:带小数的数字(负数 - 0 - 无限大)
string字符串:汉字、英文、符号、其它国家语言
array数组:一组数据的集合
object对象:存储数据和有关如何处理数据的信息
mixed新增:任何类型
<?php
    namespace phpcn;
    class Teacher{
        // 构造方法
        public function __construct(
            public string $name,
            public string $school,
            public int|float $num
        ){

        }
        public function fun(){
            return '姓名:'.$this->name.',学校:'.$this->school.',今年是'.$this->num.'年<hr/>';
        }
    }
    // 实例化
    $obj = new Teacher('西门大官人','PHP中文网',2022);
    echo $obj->fun();

# 三、mixed

类型描述
mixed新增:任何类型
<?php
    namespace phpcn;
    class Teacher{
        // 构造方法
        public function __construct(
            public mixed $name,
            public mixed $school,
            public mixed $num
        ){

        }
        public function fun(){
            return '姓名:'.$this->name.',学校:'.$this->school.',今年是'.$this->num.'年<hr/>';
        }
    }
    // 实例化
    $obj = new Teacher('西门大官人','PHP中文网',2022);
    echo $obj->fun();
Name:
<提交>