php 实现类
PHP 类的基本实现
在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法:
class ClassName {
// 属性(成员变量)
public $property;
// 方法(成员函数)
public function method() {
// 方法逻辑
}
}
类属性与访问修饰符
属性用于存储对象的状态,支持三种访问修饰符:
public:全局可访问protected:仅类自身及子类可访问private:仅类自身可访问
class User {
public $name; // 公共属性
protected $password; // 受保护属性
private $token; // 私有属性
}
类方法与构造函数
方法定义与普通函数类似,可包含参数和返回值。__construct 是特殊方法,在对象实例化时自动调用:
class Product {
public $price;
public function __construct($initialPrice) {
$this->price = $initialPrice;
}
public function applyDiscount($percent) {
$this->price *= (1 - $percent/100);
}
}
实例化与对象操作
通过 new 关键字创建对象实例,并使用 -> 访问成员:
$product = new Product(100); // 调用构造函数
$product->applyDiscount(10); // 调用方法
echo $product->price; // 访问属性(输出90)
继承与多态
使用 extends 实现继承,子类可重写父类方法:
class Animal {
public function makeSound() {
echo "Some sound";
}
}
class Dog extends Animal {
public function makeSound() {
echo "Bark";
}
}
$dog = new Dog();
$dog->makeSound(); // 输出"Bark"
静态成员
通过 static 关键字定义类级别的属性和方法,无需实例化即可访问:
class MathHelper {
public static $pi = 3.14;
public static function square($num) {
return $num * $num;
}
}
echo MathHelper::$pi; // 输出3.14
echo MathHelper::square(5); // 输出25
接口与抽象类
接口(interface)定义方法规范,抽象类(abstract class)可包含部分实现:
interface Logger {
public function log($message);
}
abstract class Shape {
abstract public function area();
}
class FileLogger implements Logger {
public function log($message) {
file_put_contents('log.txt', $message);
}
}
魔术方法
PHP 提供特殊魔术方法,以双下划线开头,如 __toString() 用于对象字符串表示:
class Person {
public $name;
public function __toString() {
return "Person: {$this->name}";
}
}
$person = new Person();
$person->name = "Alice";
echo $person; // 输出"Person: Alice"
命名空间与自动加载
命名空间解决类名冲突,PSR-4 标准实现自动加载:
namespace MyProject;
class MyClass {
// 类实现
}
// composer.json 配置示例
{
"autoload": {
"psr-4": {
"MyProject\\": "src/"
}
}
}





