⊗ppOpTrInr 77 of 107 menu

Трейтҳо дар ООП дар PHP

Чун шумо аллакай медонед, дар PHP аз якбора чанд класс мерос гирифтан имконнопазир аст, танҳо аз як класс. Пештар мо аллакай ҳалли ин мушкилиро дида будем: ба ҷои мерос гирифтан, аз объектҳои баъзе классҳо дар дохили дигарон истифода бурдан.

Дар PHP роҳи дигар ҳам мавҷуд аст. Ин аз истифодаи трейтҳо иборат аст. Трейт маҷмӯи хусусиятҳо ва методҳоро ифода мекунад, ки метавон онҳоро ба дигар классҳо дохил кард. Дар ин ҳолат хусусиятҳо ва методҳои трейт тавассути класс чун хусусиятҳои худ қабул карда мешаванд.

Синтаксиси трейт монанди синтаксиси класс аст, ба истиснои он ки номи трейт бояд бо истифода аз калимаи калидӣ trait эълон карда шавад.

Экземпляри трейтро наметавон сохт - трейтҳо танҳо барои пайваст кардан ба дигар классҳо пешбинӣ шудаанд. Худи пайвастшавӣ бо истифода аз фармони use амалӣ мешавад, ки баъд аз он бо як фосила номи трейти пайвастшаванда зикр мешавад. Ин фармон дар аввали класс навишта мешавад.

Биёед истифодаи трейтҳоро дар мисоли амалӣ бубинем. Фарз мекунем, ки мо чунин трейти Helper-ро дорем, ки хосиятҳои хусусии name ва age, ҳамчунин геттерҳои онҳоро дар бар мегирад:

<?php trait Helper { private $name; private $age; public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Фарз мекунем, ки мо инчунин чунин класси User-ро дорем, ки дар конструктори он хосиятҳои name ва age таъин карда мешаванд:

<?php class User { public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Ҳоло биёед барои хосиятҳои класси мо User геттерҳо илова кунем. Танҳо онҳоро дар худи класс нанависем, балки трейти Helper-ро пайваст кунем, ки дар он ин методҳо аллакай амалӣ карда шудаанд:

<?php class User { use Helper; // трейтро пайваст мекунем public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Пас аз пайваст кардани трейт дар класси мо методҳо ва хосиятҳои ин трейт пайдо мешаванд. Дар ин ҳолат мо ба онҳо чунон дастрасӣ пайдо мекунем, ки гӯё ба методҳо ва хосиятҳои худи класс дастрасӣ пайдо карда истодаем:

<?php $user = new User('john', 30); echo $user->getName(); // 'john'-ро хориҷ мекунад echo $user->getAge(); // 30-ро хориҷ мекунад ?>

Класси City-ро бо хосиятҳои name, age, population ва геттерҳо барои онҳо амалӣ кунед. Бигзор класси мо барои кӯтоҳ кардани коди худ аз трейти аллакай сохтаи мо Helper истифода барад.

Тоҷикӣ
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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан