Z
ZHANK
面向对象

类与对象

class 定义、new 实例化、$this、访问修饰符 public/private/protected

类与对象

PHP 的 OOP 从 PHP 5 开始成熟,现在支持完整的面向对象特性——类、继承、接口、trait、枚举。

学完本章你将: 掌握 class/new、$this、访问修饰符、类型声明。


第一个类

php
<?php
class Student {
    // 属性(PHP 7.4+ 可声明类型)
    private string $name;
    private int $age = 18;

    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function getName(): string {
        return $this->name;
    }

    public function introduce(): string {
        return "我叫{$this->name}{$this->age}岁";
    }
}

$s = new Student("小明", 20);
echo $s->introduce();  // 我叫小明,20岁

访问修饰符

修饰符类内部子类外部
public
protected
private

PHP 8 新特性

php
<?php
// 构造函数属性提升(PHP 8.0)—— 简写!
class Point {
    public function __construct(
        private int $x = 0,
        private int $y = 0,
    ) { }
    // 自动声明 + 赋值,不需要手动写属性
}

$p = new Point(3, 5);
echo $p->x;  // 错误——private!

// readonly 只读属性(PHP 8.1)—— 初始化后不能改
class Config {
    public readonly string $apiKey;
    public function __construct(string $key) {
        $this->apiKey = $key;
    }
}