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!
echo $obj->property; // 访问属性
构造函数与析构函数
构造函数 __construct() 在实例化时自动调用,用于初始化对象。析构函数 __destruct() 在对象销毁时调用。
class MyClass {
public function __construct() {
echo "Object created.";
}
public function __destruct() {
echo "Object destroyed.";
}
}
访问修饰符
PHP 支持三种访问修饰符:
public:属性或方法可在任何地方访问。protected:仅限类内部及子类访问。private:仅限类内部访问。
class MyClass {
public $publicProp;
protected $protectedProp;
private $privateProp;
}
继承
通过 extends 关键字实现继承。子类继承父类的属性和方法(非 private)。
class ParentClass {
public function parentMethod() {
echo "Parent method.";
}
}
class ChildClass extends ParentClass {
public function childMethod() {
echo "Child method.";
}
}
$child = new ChildClass();
$child->parentMethod(); // 输出: Parent method.
方法重写
子类可以重写父类的方法以实现多态。
class ParentClass {
public function myMethod() {
echo "Parent method.";
}
}
class ChildClass extends ParentClass {
public function myMethod() {
echo "Child method.";
}
}
静态属性和方法
通过 static 关键字定义静态成员,无需实例化即可通过类名访问。
class MyClass {
public static $staticProp = "Static value";
public static function staticMethod() {
echo "Static method.";
}
}
echo MyClass::$staticProp; // 输出: Static value
MyClass::staticMethod(); // 输出: Static method.
接口与抽象类
接口(interface)定义方法规范,抽象类(abstract class)允许部分方法实现。
interface MyInterface {
public function interfaceMethod();
}
abstract class MyAbstractClass {
abstract public function abstractMethod();
}
class ConcreteClass extends MyAbstractClass implements MyInterface {
public function abstractMethod() {
echo "Abstract method implemented.";
}
public function interfaceMethod() {
echo "Interface method implemented.";
}
}
命名空间
通过 namespace 组织类,避免命名冲突。
namespace MyProject;
class MyClass {
public function myMethod() {
echo "Namespaced method.";
}
}
$obj = new \MyProject\MyClass();
自动加载类
使用 spl_autoload_register 实现类文件的自动加载。
spl_autoload_register(function ($class) {
include $class . '.php';
});
$obj = new MyClass(); // 自动加载 MyClass.php
魔术方法
PHP 提供特殊魔术方法(如 __get、__set),用于自定义对象行为。

class MyClass {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return $this->data[$name];
}
}
$obj = new MyClass();
$obj->dynamicProp = "Dynamic value"; // 调用 __set
echo $obj->dynamicProp; // 调用 __get






