php object 实现
PHP 对象实现
在 PHP 中,对象是类的实例化结果,通过 class 关键字定义类,然后使用 new 关键字创建对象。以下是实现 PHP 对象的核心方法:
定义类
类通过 class 关键字定义,包含属性和方法。属性用于存储数据,方法用于定义行为。
class Person {
// 属性
public $name;
private $age;
// 构造方法
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
// 方法
public function greet() {
return "Hello, my name is " . $this->name;
}
}
实例化对象
通过 new 关键字创建类的实例(对象),并传递构造方法所需的参数。
$person = new Person("Alice", 25);
echo $person->greet(); // 输出: Hello, my name is Alice
访问属性和方法
- 公共属性(
public)可以直接通过对象访问。 - 私有属性(
private)只能通过类内部的方法访问。
echo $person->name; // 输出: Alice
// echo $person->age; // 错误: 私有属性无法直接访问
魔术方法
PHP 提供了一些特殊方法(魔术方法),用于实现对象的高级行为:
__construct():构造方法,对象初始化时调用。__destruct():析构方法,对象销毁时调用。__get()和__set():动态访问属性时触发。
class DynamicProperties {
private $data = [];
public function __get($name) {
return $this->data[$name] ?? null;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
$obj = new DynamicProperties();
$obj->dynamicProp = "Test";
echo $obj->dynamicProp; // 输出: Test
继承和多态
PHP 支持类的继承(extends)和多态,子类可以重写父类的方法。
class Employee extends Person {
public $position;
public function __construct($name, $age, $position) {
parent::__construct($name, $age);
$this->position = $position;
}
public function greet() {
return parent::greet() . ", and I am a " . $this->position;
}
}
$employee = new Employee("Bob", 30, "Developer");
echo $employee->greet(); // 输出: Hello, my name is Bob, and I am a Developer
接口和抽象类
- 接口(
interface)定义方法规范,类通过implements实现接口。 - 抽象类(
abstract)可以包含抽象方法和具体方法,需通过子类实现。
interface Logger {
public function log($message);
}
class FileLogger implements Logger {
public function log($message) {
file_put_contents('log.txt', $message, FILE_APPEND);
}
}
$logger = new FileLogger();
$logger->log("Error occurred");
对象序列化
通过 serialize() 和 unserialize() 实现对象的序列化和反序列化。
$serialized = serialize($person);
$unserialized = unserialize($serialized);
echo $unserialized->greet(); // 输出: Hello, my name is Alice
匿名类
PHP 7+ 支持匿名类,用于快速创建一次性对象。
$anonymous = new class {
public function sayHello() {
return "Hello from anonymous class";
}
};
echo $anonymous->sayHello(); // 输出: Hello from anonymous class
通过以上方法,可以灵活实现 PHP 对象的定义、实例化和操作。







