当前位置:首页 > 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实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…