Pre-loader

/ K2 Cloud ERP for PHP / Різні задачі по PHP / Об’єктно-орієнтоване програмування (ООП) в PHP / Перевизначення методів сторонніми програмістами в PHP

Перевизначення методів сторонніми програмістами в PHP

Приклад використання методів у класах PHP та можливість їхньої перевизначення (кастомізації) сторонніми програмістами. Розглянемо клас Car, який має методи startEngine, drive та stopEngine.

<?php

class Car {
    protected $make;
    protected $model;
    protected $engineStarted = false;

    public function __construct($make, $model) {
        $this->make = $make;
        $this->model = $model;
    }

    public function startEngine() {
        if (!$this->engineStarted) {
            echo "Двигун запущено.
";
            $this->engineStarted = true;
        } else {
            echo "Двигун вже запущено.
";
        }
    }

    public function drive() {
        if ($this->engineStarted) {
            echo "Автомобіль рухається.
";
        } else {
            echo "Для того, щоб рухатися, спочатку потрібно запустити двигун.
";
        }
    }

    public function stopEngine() {
        if ($this->engineStarted) {
            echo "Двигун зупинено.
";
            $this->engineStarted = false;
        } else {
            echo "Двигун вже зупинено.
";
        }
    }
}

// Сторонній програміст може успадковувати клас Car та перевизначати методи за необхідності

class CustomCar extends Car {
    public function startEngine() {
        echo "Спеціальний метод для запуску двигуна.
";
        parent::startEngine();  // Викликати батьківський метод
    }

    public function drive() {
        echo "Спеціальний метод для руху.
";
        parent::drive();
    }

    public function stopEngine() {
        echo "Спеціальний метод для зупинки двигуна.
";
        parent::stopEngine();
    }
}

// Використання класу Car та CustomCar

$carInstance = new Car("Toyota", "Camry");
$carInstance->startEngine();
$carInstance->drive();
$carInstance->stopEngine();

echo "
";

$customCarInstance = new CustomCar("Tesla", "Model S");
$customCarInstance->startEngine();  // Викликається перевизначений метод
$customCarInstance->drive();         // Викликається перевизначений метод
$customCarInstance->stopEngine();    // Викликається перевизначений метод

У цьому прикладі клас Car визначає методи для управління двигуном автомобіля, а клас CustomCar успадковує Car та перевизначає його методи. Коли ми створюємо об'єкт класу CustomCar і викликаємо його методи, вони викликають відповідні перевизначені методи класу CustomCar.

Автор: Рудюк С.А. 2023. K2 Cloud ERP.