当前位置:首页 > PHP

php 多态实现

2026-01-29 13:08:40PHP

多态的基本概念

多态是面向对象编程的三大特性之一,允许不同类的对象对同一消息做出响应。在PHP中,多态主要通过继承和接口实现。

通过继承实现多态

父类定义方法,子类重写该方法以实现不同的行为。

php 多态实现

class Animal {
    public function makeSound() {
        echo "Animal sound";
    }
}

class Dog extends Animal {
    public function makeSound() {
        echo "Bark";
    }
}

class Cat extends Animal {
    public function makeSound() {
        echo "Meow";
    }
}

$animals = [new Dog(), new Cat()];
foreach ($animals as $animal) {
    $animal->makeSound();
}

通过接口实现多态

接口定义方法签名,不同类实现接口并提供具体实现。

interface Shape {
    public function calculateArea();
}

class Circle implements Shape {
    private $radius;

    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function calculateArea() {
        return pi() * $this->radius * $this->radius;
    }
}

class Square implements Shape {
    private $side;

    public function __construct($side) {
        $this->side = $side;
    }

    public function calculateArea() {
        return $this->side * $this->side;
    }
}

$shapes = [new Circle(5), new Square(4)];
foreach ($shapes as $shape) {
    echo $shape->calculateArea();
}

抽象类实现多态

抽象类可以包含抽象方法和具体方法,子类必须实现抽象方法。

php 多态实现

abstract class Vehicle {
    abstract public function move();

    public function startEngine() {
        echo "Engine started";
    }
}

class Car extends Vehicle {
    public function move() {
        echo "Car is moving";
    }
}

class Bike extends Vehicle {
    public function move() {
        echo "Bike is moving";
    }
}

$vehicles = [new Car(), new Bike()];
foreach ($vehicles as $vehicle) {
    $vehicle->move();
}

类型提示与多态

在函数参数中使用类型提示,可以接受实现特定接口或继承特定类的对象。

function makeSound(Animal $animal) {
    $animal->makeSound();
}

makeSound(new Dog());
makeSound(new Cat());

魔术方法实现多态

通过魔术方法如__call实现动态方法调用,增加灵活性。

class Polymorphic {
    public function __call($name, $arguments) {
        if ($name == 'execute') {
            echo "Executing with arguments: " . implode(', ', $arguments);
        }
    }
}

$poly = new Polymorphic();
$poly->execute('arg1', 'arg2');

多态的应用场景

多态常用于需要处理多种类型对象的场景,如支付系统、日志系统等。通过多态可以降低代码耦合度,提高扩展性。

标签: 多态php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form actio…