⊗ppOpTrInr 77 of 107 menu

Traits i OOP i PHP

Som du redan vet går det inte att ärva från flera klasser samtidigt i PHP, bara från en. Tidigare har vi gått igenom en lösning på detta problem: istället för arv använda objekt från en klass inuti en annan.

I PHP finns det ett annat sätt. Det handlar om att använda traits. Ett trait representerar en uppsättning av egenskaper och metoder som kan inkluderas i en annan klass. Då kommer egenskaperna och metoderna från traitet att uppfattas av klassen som sina egna.

Syntaxen för ett trait är densamma som för en klass, med undantaget att namnet på traitet behöver deklareras med hjälp av nyckelordet trait.

Man kan inte skapa en instans av ett trait - traits är endast avsedda att anslutas till andra klasser. Själva anslutningen sker med kommandot use, efter vilket namnet på traitet som ansluts anges med mellanslag. Detta kommando skrivs i början av klassen.

Låt oss titta på användningen av traits med ett praktiskt exempel. Låt oss säga att vi har ett trait Helper, som innehåller de privata egenskaperna name och age, samt deras getters:

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

Låt oss också säga att vi har en klass User, i vars konstruktor egenskaperna name och age sätts:

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

Låt oss nu lägga till getters för egenskaperna i vår klass User. Men låt oss inte skriva dem i själva klassen, utan bara ansluta traitet Helper, där dessa metoder redan är implementerade:

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

Efter anslutning av traitet kommer vår klass att få metoderna och egenskaperna från detta trait. Då kommer vi att komma åt dem som om de vore metoder och egenskaper i själva klassen:

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

Implementera klassen City med egenskaperna name, age, population och getters för dem. Låt vår klass för förkortning av sin kod använda det trait Helper som vi redan har skapat.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa