php面向对象实现
PHP 面向对象编程实现
面向对象编程(OOP)是 PHP 的核心特性之一,通过类、对象、继承、封装和多态等概念实现代码的模块化和复用。
类与对象
定义一个类使用 class 关键字,通过 new 关键字实例化对象:
class Car {
public $color;
public function startEngine() {
echo "Engine started!";
}
}
$myCar = new Car();
$myCar->color = "red";
$myCar->startEngine();
构造函数与析构函数
构造函数在对象创建时自动调用,析构函数在对象销毁时触发:
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __destruct() {
echo "Object destroyed";
}
}
$person = new Person("Alice");
访问修饰符
控制属性和方法的访问权限:
public:全局可访问protected:仅类内和子类可访问private:仅类内可访问class Example { public $publicVar; protected $protectedVar; private $privateVar; }
继承
子类继承父类的属性和方法:
class Animal {
public function eat() {
echo "Eating...";
}
}
class Dog extends Animal {
public function bark() {
echo "Woof!";
}
}
$dog = new Dog();
$dog->eat();
$dog->bark();
方法重写
子类可以重写父类方法:
class Bird {
public function fly() {
echo "Flying high";
}
}
class Penguin extends Bird {
public function fly() {
echo "I can't fly";
}
}
静态属性和方法
无需实例化即可访问:
class Math {
public static $pi = 3.14;
public static function square($num) {
return $num * $num;
}
}
echo Math::$pi;
echo Math::square(5);
接口
定义方法规范,类必须实现所有接口方法:

interface Logger {
public function log($message);
}
class FileLogger implements Logger {
public function log($message) {
file_put_contents('log.txt', $message);
}
}
抽象类
包含抽象方法和具体方法,不能直接实例化:
abstract class Shape {
abstract public function area();
public function printArea() {
echo "Area: " . $this->area();
}
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return pi() * $this->radius * $this->radius;
}
}
命名空间
组织代码避免命名冲突:
namespace MyProject;
class MyClass {
// class implementation
}
$obj = new \MyProject\MyClass();
自动加载
使用 spl_autoload_register 自动加载类文件:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
$obj = new MyClass();
魔术方法
特殊方法在特定事件时自动调用:

class Magic {
public function __get($name) {
echo "Getting $name";
}
public function __set($name, $value) {
echo "Setting $name to $value";
}
public function __call($name, $arguments) {
echo "Calling $name with " . implode(', ', $arguments);
}
}
对象克隆
使用 __clone 方法控制对象复制行为:
class Cloneable {
public $data;
public function __clone() {
$this->data = "Cloned data";
}
}
$obj1 = new Cloneable();
$obj1->data = "Original";
$obj2 = clone $obj1;
echo $obj2->data; // Outputs "Cloned data"
类型声明
PHP 7+ 支持参数和返回值类型声明:
class Calculator {
public function add(float $a, float $b): float {
return $a + $b;
}
}
匿名类
PHP 7+ 支持即时创建匿名类:
$logger = new class {
public function log($msg) {
echo $msg;
}
};
$logger->log("Hello");
Trait
解决 PHP 单继承限制,代码复用机制:
trait Loggable {
public function log($msg) {
echo $msg;
}
}
class User {
use Loggable;
}
$user = new User();
$user->log("User created");
对象序列化
将对象转换为字符串存储或传输:
class SerializableClass {
public $data;
}
$obj = new SerializableClass();
$obj->data = "Important data";
$serialized = serialize($obj);
$unserialized = unserialize($serialized);






