php 实现类
PHP 实现类的基本语法
在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 MyClass)。
class MyClass {
// 属性(成员变量)
public $property;
// 方法(成员函数)
public function myMethod() {
echo "This is a method.";
}
}
类的实例化
通过 new 关键字创建类的实例(对象),并可以访问其属性和方法。
$object = new MyClass();
$object->property = "Value";
$object->myMethod(); // 输出: This is a method.
构造函数与析构函数
构造函数 __construct() 在对象创建时自动调用,用于初始化属性。析构函数 __destruct() 在对象销毁时调用。
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
echo "Object created for $name.";
}
public function __destruct() {
echo "Object destroyed.";
}
}
$person = new Person("Alice"); // 输出: Object created for Alice.
访问修饰符
PHP 支持三种访问修饰符:
public:属性和方法可以在任何地方访问。protected:只能在类内部或子类中访问。private:只能在类内部访问。
class Example {
public $publicVar = "Public";
protected $protectedVar = "Protected";
private $privateVar = "Private";
public function showVars() {
echo $this->privateVar; // 可访问
}
}
继承
通过 extends 关键字实现类的继承,子类可以继承父类的属性和方法。
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.
静态属性和方法
使用 static 关键字定义静态属性和方法,无需实例化即可通过类名访问。
class Math {
public static $pi = 3.14;
public static function square($num) {
return $num * $num;
}
}
echo Math::$pi; // 输出: 3.14
echo Math::square(4); // 输出: 16
接口与抽象类
接口通过 interface 定义,要求实现类必须实现其方法。抽象类通过 abstract 定义,可以包含抽象方法和具体方法。
interface Logger {
public function log($message);
}
class FileLogger implements Logger {
public function log($message) {
file_put_contents("log.txt", $message);
}
}
abstract class Animal {
abstract public function makeSound();
public function eat() {
echo "Eating...";
}
}
魔术方法
PHP 提供了一系列魔术方法(如 __get、__set、__call 等),用于在特定事件发生时自动调用。
class Magic {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
return $this->data[$name] ?? null;
}
}
$magic = new Magic();
$magic->dynamicProp = "Test"; // 调用 __set
echo $magic->dynamicProp; // 输出: Test
命名空间
通过 namespace 避免类名冲突,需在文件顶部声明。

namespace MyProject;
class MyClass {
public function hello() {
echo "Hello from MyProject!";
}
}
$obj = new \MyProject\MyClass();






