⊗ppOpTrInr 77 of 107 menu

Traits i OOP i PHP

Som du allerede ved, kan man i PHP ikke arve fra flere klasser på én gang, kun fra én. Tidligere har vi allerede genemgået løsningen på dette problem: i stedet for arv skal man bruge objekter fra nogle klasser inde i andre.

I PHP er der en anden måde. Den består i at bruge traits. En trait repræsenterer et sæt af egenskaber og metoder, som kan inkluderes i en anden klasse. Egenskaberne og metoderne fra traiten vil blive opfattet af klassen som om de var dens egne.

Syntaksen for en trait er den samme som for en klasse, bortset fra at navnet på traiten skal erklæres ved hjælp af nøgleordet trait.

Man kan ikke oprette en instans af en trait - traits er kun beregnet til at blive tilsluttet andre klasser. Selve tilslutningen udføres med kommandoen use, efterfulgt af navnet på den trait, der tilsluttes. Denne kommando skrives i starten af klassen.

Lad os se anvendelsen af traits i et praktisk eksempel. Antag, at vi har følgende trait Helper, som indeholder de private egenskaber name og age, samt deres gettere:

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

Antag, at vi også har følgende klasse User, i hvis konstruktør egenskaberne name og age bliver sat:

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

Lad os nu tilføje gettere for egenskaberne i vores klasse User. Men lad os ikke skrive dem i selve klassen, men blot tilslutte traiten Helper, hvor disse metoder allerede er implementeret:

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

Efter tilslutning af traiten vil vores klasse få metoder og egenskaber fra denne trait. Vi vil henvise til dem, som om de var metoder og egenskaber i selve klassen:

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

Implementer klassen City med egenskaberne name, age, population og gettere til dem. Lad vores klasse for at forkorte sin kode bruge den allerede oprettede trait Helper.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis