Sobes.tech
Middle
285

Polimorfizm nedir ve PHP programlamada nasıl kullanılır?

AI'dan gelen yanıt

sobes.tech yapay zeka

Polimorfizm, aynı arayüzü farklı veri türleri için kullanma imkanıdır. PHP'de birkaç biçimde kendini gösterir:

  1. Kalıtım (Alt Tip Polimorfizmi): Alt sınıflar, ana sınıfın metodlarını yeniden tanımlayabilir ve kendi uygulamalarını sağlayabilir. Bir temel tipteki nesne üzerinde metod çağrıldığında, aslında belirli alt sınıfın metodu çalıştırılır, nesnenin tipi ne olursa olsun.

    <?php
    
    class Animal {
        public function makeSound() {
            echo "Genel hayvan sesi\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(); // İlgili alt tip metodunu çağırır
    }
    
    $dog = new Dog();
    $cat = new Cat();
    
    makeAnimalSound($dog); // Çıktı: Hav!
    makeAnimalSound($cat); // Çıktı: Miyav!
    
  2. Arayüzler (Arayüz Polimorfizmi): Farklı sınıflar aynı arayüzü uygulayabilir, belirli bir metod kümesini aynı imzayla sağlayacak şekilde söz verirler. Bu, farklı sınıf nesneleriyle ortak bir arayüz üzerinden çalışmayı sağlar.

    <?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) { // Arayüz kontrolü
                $totalArea += $shape->getArea();
            }
        }
        return $totalArea;
    }
    
    $shapes = [new Circle(5), new Square(4)];
    echo calculateTotalArea($shapes); // Daire ve kare alanlarının toplamını gösterir
    
  3. Soyut Sınıflar (Soyut Sınıf Polimorfizmi): Arayüz tabanlı polimorfizme benzer, ancak bazı metodlar için temel bir uygulama tanımlamaya izin verir.

Polimorfizm, kodun esnekliğini, genişletilebilirliğini ve sürdürülebilirliğini artırır, farklı tipteki nesne koleksiyonlarıyla ortak bir arayüz üzerinden çalışan genel algoritmalar yazmaya olanak tanır.