⊗ppOpTrInr 77 of 107 menu

PHP da OOP da Treytlar

Siz allaqachon bilasizki, PHP da bir nechta klasslardan birdaniga meros olish mumkin emas, faqat bittasidan. Ilgari biz bu muammoning yechimini o'rgangan edik: meros o'rniga boshqa klasslar ichida bir klasslarning ob'ektlaridan foydalanish.

PHP da boshqa usul ham mavjud. Bu treytlar dan foydalanishdir. Treyt boshqa klassga kiritish mumkin bo'lgan xususiyatlar va metodlar to'plamidir. Bunda treytning xususiyatlari va metodlari klass tomonidan o'zlariningki kabi qabul qilinadi.

Treytning sintaksisi klassniki bilan bir xil, faqatgina treyt nomi trait kalit so'zi yordamida e'lon qilinadi.

Treytning namunasini yaratib bo'lmaydi - treytlar faqat boshqa klasslarga ulash uchun mo'ljallangan. Ulashning o'zi use buyrug'i yordamida amalga oshiriladi, undan keyin bo'shliq bilan ajratilgan holda ulanishi kerak bo'lgan treytning nomi ko'rsatiladi. Ushbu buyruq klass boshida yoziladi.

Keling, treytlarning qo'llanilishini amaliy misolda ko'rib chiqaylik. Aytaylik, bizda shunday Helper treyti berilgan bo'lib, unda name va age private xususiyatlari hamda ularning getterlari mavjud:

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

Aytaylik, bizda shunday User klassi ham mavjud bo'lib, uning konstruktorida name va age xususiyatlari o'rnatilgan:

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

Keling endi User klassimizning xususiyatlari uchun getterlarni qo'shaylik. Faqat ularni klassning o'zida yozmaymiz, balki shunchaki Helper treytini ulaymiz, unda bu metodlar allaqachon amalga oshirilgan:

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

Treyt ulangandan so'ng, klassimizda ushbu treytning metodlari va xususiyatlari paydo bo'ladi. Bunda ularga klassning o'zining metodlari va xususiyatlari kabi murojaat qilamiz:

<?php $user = new User('john', 30); echo $user->getName(); // 'john' chiqaradi echo $user->getAge(); // 30 chiqaradi ?>

name, age, population xususiyatlari va ular uchun getterlar bilan City klassini amalga oshiring. Klassimiz o'z kodini qisqartirish uchun biz yaratgan Helper treytidan foydalansin.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish