Sobes.tech
Middle

Polimorfizm nədir və PHP proqramlaşdırmasında necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Polimorfizm — eyni interfeysi müxtəlif məlumat növləri üçün istifadə etmək imkanını verir. PHP-də bu müxtəlif formalarda özünü göstərir:

  1. Miras (Alt növ Polimorfizmi): Alt sinflər valideyn sinfin metodlarını yenidən yaza bilər və öz tətbiqini təmin edə bilər. Əsas tipli obyekt üzərində metod çağırıldıqda, əslində, konkret alt sinfin metodu icra olunur, obyektin növündən asılı olaraq.

    <?php
    
    class Animal {
        public function makeSound() {
            echo "Ümumi heyvan səsi\n";
        }
    }
    
    class Dog extends Animal {
        public function makeSound() {
            echo "Hav!\n";
        }
    }
    
    class Cat extends Animal {
        public function makeSound() {
            echo "Miyav!\n";
        }
    }
    
    function makeAnimalSound(Animal $animal) {
        $animal->makeSound(); // Müvafiq alt növ metodunu çağırır
    }
    
    $dog = new Dog();
    $cat = new Cat();
    
    makeAnimalSound($dog); // Çıxış: Hav!
    makeAnimalSound($cat); // Çıxış: Miyav!
    
  2. İnterfeyslər (İnterfeys Polimorfizmi): Müxtəlif sinflər eyni interfeysi tətbiq edə bilər, və bu, müəyyən metodların eyni imzaya malik olmasını vəd edir. Bu, müxtəlif sinif obyektləri ilə işləməyə imkan verir.

    <?php
    
    interface Shape {
        public function getArea();
    }
    
    class Circle implements Shape {
        private $radius;
    
        public function __construct($radius) {
            $this->radius = $radius;
        }
    
        public function getArea() {
            return pi() * $this->radius * $this->radius;
        }
    }
    
    class Square implements Shape {
        private $side;
    
        public function __construct($side) {
            $this->side = $side;
        }
    
        public function getArea() {
            return $this->side * $this->side;
        }
    }
    
    function calculateTotalArea(array $shapes) {
        $totalArea = 0;
        foreach ($shapes as $shape) {
            if ($shape instanceof Shape) { // İnterfeysin yoxlanması
                $totalArea += $shape->getArea();
            }
        }
        return $totalArea;
    }
    
    $shapes = [new Circle(5), new Square(4)];
    echo calculateTotalArea($shapes); // Dairə və kvadratın sahələrinin cəmini göstərəcək
    
  3. Abstrakt sinflər (Abstrakt sinf Polimorfizmi): İnterfeysə əsaslanan polimorfizmə bənzəyir, lakin bəzi metodlar üçün əsas tətbiqi müəyyən etməyə imkan verir.

Polimorfizm kodun elastikliyini, genişləndirilə bilməsini və saxlanmasını artırır, müxtəlif tipli obyekt kolleksiyaları ilə işləyən ümumi alqoritmlər yazmağa imkan verir, hamısı ümumi interfeys vasitəsilə.