⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј