php实现类属性
PHP 实现类属性
在 PHP 中,类属性(也称为成员变量或字段)用于存储对象的状态。以下是实现类属性的方法:
定义类属性
类属性在类内部声明,通常使用 public、protected 或 private 访问修饰符来定义其可见性。
class MyClass {
public $publicProperty; // 公开属性,任何地方可访问
protected $protectedProperty; // 受保护属性,仅类和子类可访问
private $privateProperty; // 私有属性,仅类内部可访问
}
初始化属性
属性可以在声明时直接初始化,或在构造函数中初始化。
class MyClass {
public $name = "Default Name"; // 直接初始化
public function __construct($name) {
$this->name = $name; // 通过构造函数初始化
}
}
访问属性
通过对象实例访问属性时,使用 -> 运算符。
$obj = new MyClass("John");
echo $obj->name; // 输出: John
静态属性
静态属性属于类而非实例,通过 static 关键字定义,并通过类名和 :: 访问。
class MyClass {
public static $staticProperty = "Static Value";
}
echo MyClass::$staticProperty; // 输出: Static Value
属性类型声明(PHP 7.4+)
PHP 7.4 支持属性类型声明,可以在属性前添加类型。
class MyClass {
public string $name; // 字符串类型
protected int $age; // 整型
private array $data = []; // 数组类型
}
只读属性(PHP 8.1+)
PHP 8.1 引入 readonly 修饰符,确保属性只能在初始化时赋值一次。
class MyClass {
public readonly string $id;
public function __construct(string $id) {
$this->id = $id;
}
}
$obj = new MyClass("123");
// $obj->id = "456"; // 错误:只读属性不能修改
属性访问控制
通过 __get() 和 __set() 魔术方法可以控制属性的读写行为。
class MyClass {
private $data = [];
public function __get($name) {
return $this->data[$name] ?? null;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
$obj = new MyClass();
$obj->dynamicProperty = "Value"; // 动态设置属性
echo $obj->dynamicProperty; // 输出: Value






