Полиформизм деген эмне жана ал PHP программалоодо кандай колдонулат?
sobes.tech AI
AIден жооп
Полиморфизм — бул ар бир түрдөгү маалымат үчүн бир эле интерфейсти колдонуу мүмкүнчүлүгү. PHPда ал бир нече формада көрүнөт:
-
Мурас алуу (Subtype Polymorphism): Түшүнүктүү класстар ата-энесинин методдорун кайра аныктап, өзүнүн ишке ашуусун камсыздай алат. Объекттин негизги тибинде метод чакырылганда, чындыгында, конкреттүү балдар классынын методу ишке ашырылат, объекттин тибине жараша.
<?php class Animal { public function makeSound() { echo "Жандык жаныбардын жалпы үнү\n"; } } class Dog extends Animal { public function makeSound() { echo "Гав!\n"; } } class Cat extends Animal { public function makeSound() { echo "Мяу!\n"; } } function makeAnimalSound(Animal $animal) { $animal->makeSound(); // Тийиштүү балдар тибиндеги метод чакырылат } $dog = new Dog(); $cat = new Cat(); makeAnimalSound($dog); // Чыгуу: Гав! makeAnimalSound($cat); // Чыгуу: Мяу! -
Интерфейстер (Interface Polymorphism): Төрдүү класстар бирдей интерфейсти ишке ашыра алат, белгилүү бир методдор топтомун бирдей сигнатура менен убада кылат. Бул объектилер менен иштөө үчүн бирдиктүү интерфейс аркылуу иштөө мүмкүнчүлүгүн берет.
<?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) { // Интерфейске ылайыкташтыруу текшерүү $totalArea += $shape->getArea(); } } return $totalArea; } $shapes = [new Circle(5), new Square(4)]; echo calculateTotalArea($shapes); // Аяктоо: кругунун жана квадратынын аянттарынын жыйындысы -
АБстракттуу класстар (Abstract Class Polymorphism): Интерфейстерге негизделген полиморфизмге окшош, бирок кээ бир методдор үчүн негизги ишке ашырууну аныктоого мүмкүндүк берет.
Полиморфизм кодуңуздун ийкемдүүлүгүн, кеңейтиңдүүлүгүн жана колдоосун жогорулатат, ар кандай типтеги объекттердин топтомдору менен иштөө үчүн жалпы алгоритмдер жазууга мүмкүндүк берет, бирдиктүү интерфейс аркылуу.