⊗ppOpIfAp 68 of 107 menu

Интерфейсҳо дар ООП дар PHP истифода бурда мешаванд

Пас, мо аллакай муайян кардем, ки интерфейсҳо - роҳи хуб барои назорати он ки ҳамаи методҳои зарурии синф амалӣ карда шудаанд.

Биёед яке дигар, амалӣтар, намунаро дида баромадем. Бигзор мо синфе дошта бошем, ки дар худ маҷмӯи объектҳои шаклҳоро нигоҳ медорад:

<?php class FiguresCollection { private $figures = []; // массив барои шаклҳо } ?>

Дар синфи мо метод addFigure барои илова кардани объектҳо ба коллексия амалӣ кунем:

<?php class FiguresCollection { private $figures = []; // Объекти шакл параметр гузаронида мешавад: public function addFigure($figure) { $this->figures[] = $figure; } } ?>

Ошкор аст, ки мо ба ин ҳисоб мекунем, ки параметри метод addFigure объекти шакл гузаронида шавад. Аммо барои ин ягон назорате вуҷуд надорад!

Биёед ишора барои навъҳоро истифода барем ва ба таври равшан навъи объектҳоро чун Figure нишон диҳем:

<?php class FiguresCollection { private $figures = []; public function addFigure(Figure $figure) { $this->figures[] = $figure; } } ?>

Биёед бо он ки мо чӣ кардем, шинос шавем.

Агар Figure синфи воқеан мавҷуда мебуд, пас дар параметри метод мо метавонистем объектҳои ин синф, ва инчунин ворисони онро гузаронем.

Дар ҳолати мо, аммо, Figure - интерфейс аст. Дар чунин ҳолат ишора инро ифода мекунад, ки параметри метод танҳо метавонад объектҳои синфе, ки интерфейси моро амалӣ мекунад, гузаронида шавад.

Биёед объекти синфи моро эҷод кунем ва ба он шаклҳоро илова кунем:

<?php $figuresCollection = new FiguresCollection; // Як-ду квадрат илова кунем: $figuresCollection->add(new Quadrate(2)); $figuresCollection->add(new Quadrate(3)); // Як-ду росткунҷа илова кунем: $figuresCollection->add(new Rectangle(2, 3)); $figuresCollection->add(new Rectangle(3, 4)); ?>

Кӯшиши илова кардани объекти ягон синфи дигар ба хато меояд:

<?php $figuresCollection = new FiguresCollection; class Test {}; // ягон синфи дигар $figuresCollection->add(new Test); // хато медиҳад ?>

Чӣ дар амал ба мо чунин назорат медиҳад: зеро ҳамаи шаклҳо, ки ба коллексия илова карда шудаанд, интерфейси Figure -ро амалӣ мекунанд, мо метавонем бо итминон бошем, ки ҳар яке аз онҳо метод getSquare ва метод getPerimeter -ро дорад.

Эҳтимол дар оянда ғайр аз квадрат ва росткунҷа масалан, секунҷа низ пайдо шавад. Дар ин ҳолат дар секунҷа низ методҳои getSquare ва getPerimeter хоҳанд буд.

Дар амал ин ба мо чунин медиҳад: мо метавонем дар синфи FiguresCollection, масалан, метод getTotalSquare -ро эҷод кунем, ки масоҳати умумии шаклҳои коллексияро ёфта метавонад. Дар ин метод мо массив шаклҳоро бо ҳалқа такрор мекунем ва аз ҳар шакл метод getSquare -ро даъват мекунем.

Зеро ҳар шакл интерфейси Figure -ро амалӣ мекунад, мо метавонем дар 100% итминон дошта бошем, ки ҳар шакл ин метод getSquare -ро дорад.

Пас, ин аст амалӣ кардани метод:

<?php class FiguresCollection { private $figures = []; public function addFigure(Figure $figure) { $this->figures[] = $figure; } // Масоҳати умумӣ меёбем: public function getTotalSquare() { $sum = 0; foreach ($this->figures as $figure) { $sum += $figure->getSquare(); // метод getSquare истифода мебарем } return $sum; } } ?>

Бе ба коди ман нигоҳ кардан ҳамон синфи FiguresCollection -ро амалӣ кунед.

Ба синфи FiguresCollection метод getTotalPerimeter -ро барои ёфтани периметри ҳамаи шаклҳо илова кунед.

Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан