PHP类实现
PHP 类实现的基本结构
在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 MyClass)。类内部可以包含属性(变量)和方法(函数)。
class MyClass {
// 属性
public $property;
// 方法
public function myMethod() {
echo "Hello from MyClass!";
}
}
实例化类
通过 new 关键字创建类的实例。实例化后,可以访问类的属性和方法。
$obj = new MyClass();
$obj->myMethod(); // 输出: Hello from MyClass!
构造函数和析构函数
构造函数 __construct() 在实例化时自动调用,用于初始化对象。析构函数 __destruct() 在对象销毁时调用。
class MyClass {
public function __construct() {
echo "Object created.";
}
public function __destruct() {
echo "Object destroyed.";
}
}
$obj = new MyClass(); // 输出: Object created.
unset($obj); // 输出: Object destroyed.
属性和方法的可见性
PHP 支持三种可见性修饰符:

public:可从任何地方访问。protected:仅限类和子类访问。private:仅限类内部访问。
class MyClass {
public $publicProp = "Public";
protected $protectedProp = "Protected";
private $privateProp = "Private";
public function showProps() {
echo $this->publicProp; // 可访问
echo $this->protectedProp; // 可访问
echo $this->privateProp; // 可访问
}
}
$obj = new MyClass();
echo $obj->publicProp; // 可访问
// echo $obj->protectedProp; // 报错
// echo $obj->privateProp; // 报错
继承
通过 extends 关键字实现继承。子类可以访问父类的 public 和 protected 属性和方法。
class ParentClass {
public $parentProp = "Parent Property";
public function parentMethod() {
echo "Parent Method";
}
}
class ChildClass extends ParentClass {
public function childMethod() {
echo $this->parentProp; // 访问父类属性
$this->parentMethod(); // 调用父类方法
}
}
$child = new ChildClass();
$child->childMethod();
静态属性和方法
通过 static 关键字定义静态成员,无需实例化即可通过类名访问。
class MyClass {
public static $staticProp = "Static Property";
public static function staticMethod() {
echo "Static Method";
}
}
echo MyClass::$staticProp; // 输出: Static Property
MyClass::staticMethod(); // 输出: Static Method
接口和抽象类
接口通过 interface 定义,类通过 implements 实现接口。抽象类通过 abstract 定义,可以包含抽象方法和具体方法。

interface MyInterface {
public function interfaceMethod();
}
abstract class MyAbstractClass {
abstract public function abstractMethod();
public function concreteMethod() {
echo "Concrete Method";
}
}
class MyClass extends MyAbstractClass implements MyInterface {
public function abstractMethod() {
echo "Abstract Method";
}
public function interfaceMethod() {
echo "Interface Method";
}
}
$obj = new MyClass();
$obj->abstractMethod(); // 输出: Abstract Method
$obj->interfaceMethod(); // 输出: Interface Method
$obj->concreteMethod(); // 输出: Concrete Method
魔术方法
PHP 提供了一系列魔术方法,以双下划线开头,用于实现特殊功能(如属性访问、方法调用等)。
class MyClass {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return $this->data[$name] ?? null;
}
public function __call($name, $args) {
echo "Calling undefined method $name";
}
}
$obj = new MyClass();
$obj->dynamicProp = "Value"; // 调用 __set
echo $obj->dynamicProp; // 调用 __get
$obj->undefinedMethod(); // 调用 __call
命名空间
通过 namespace 关键字定义命名空间,避免类名冲突。
namespace MyNamespace;
class MyClass {
public function show() {
echo "Class in MyNamespace";
}
}
$obj = new \MyNamespace\MyClass();
$obj->show();
Trait
通过 trait 关键字定义代码复用单元,类通过 use 关键字引入 Trait。
trait MyTrait {
public function traitMethod() {
echo "Trait Method";
}
}
class MyClass {
use MyTrait;
}
$obj = new MyClass();
$obj->traitMethod(); // 输出: Trait Method






