⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј