⊗ppOpTrInr 77 of 107 menu

PHPдеги ООПдо трейттер

Өзүңүз билгендей эле, PHPде бир нече класстан бир эле учурда мурастай албайсыз, бир гана класстан мурастай аласыз. Биз бул көйгөйгө чечимди мурда эле өтүп көргөнбүз: мурас коюунун ордуна класстардын биринин объектерин башкаларынын ичинде колдонуу.

PHPде дагы бир ыкма бар. Ал трейттер колдонууда турат. Трейт башка класска кошулушу мүмкүн болгон касиеттер менен методдордун жыйындысын көрсөтөт. Бул учурда трейттин касиеттери жана методдору класска өздөрүнүкү сыяктуу сезилет.

Трейттин синтаксиси класстыкы сыяктуу эле, алардан айырмасы, трейттин атын trait деген ачкыч сөз менен жарыялоо керек.

Трейттин дарегин түзүүгө болбойт - трейттер башка класстарга туташтыруу үчүн гана атайындалышкан. Туташтыруу өзү use буйругу менен ишке ашат, андан кийин боштук менен айырмаланган туташтырыла турган трейттин аты көрсөтүлөт. Бул буйрук класстын башында жазылат.

Трейттерди колдонууну практикалык мисалда карап көрөлү. Бизге приват касиеттери name жана age, ошондой эле алардын геттерлерин камтыган мындай Helper трейти берилсин:

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

Ошондой эле бизде куруучусунда name жана age касиеттери берилген мындай User классы бар болсун:

<?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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу