⊗ppOpTrInr 77 of 107 menu

Trender i OOP i PHP

Som du allerede vet, kan man i PHP ikke arve fra flere klasser samtidig, bare fra én. Tidligere har vi allerede gått gjennom løsningen på dette problemet: i stedet for arv bruke objekter fra en klasse inne i en annen.

I PHP finnes det en annen måte. Den består i bruk av trender. En trend representerer et sett med egenskaper og metoder som kan inkluderes i en annen klasse. Egenskapene og metodene til trenden vil da bli oppfattet av klassen som om de var dens egne.

Syntaksen for en trend er den samme som for en klasse, bortsett fra at navnet på trenden må deklareres ved hjelp av nøkkelordet trait.

Man kan ikke opprette en forekomst av en trend - trender er kun beregnet for tilkobling til andre klasser. Selve tilkoblingen utføres med kommandoen use, etterfulgt av navnet på trenden som skal kobles til, atskilt med mellomrom. Denne kommandoen skrives i begynnelsen av klassen.

La oss se på anvendelsen av trender med et praktisk eksempel. La oss si at vi har denne trenden Helper, som inneholder de private egenskapene 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; } } ?>

La oss si at vi også har denne klassen User, der egenskapene name og age settes i konstruktøren:

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

La oss nå legge til gettere for egenskapene i klassen vår User. Men la oss ikke skrive dem i selve klassen, og i stedet bare koble til trenden Helper, der disse metodene allerede er implementert:

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

Etter tilkobling av trenden vil metodene og egenskapene fra denne trenden dukke opp i klassen vår. Vi vil da kunne bruke dem som om de var metodene og egenskapene til selve klassen:

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

Implementer klassen City med egenskapene name, age, population og gettere for dem. La klassen vår, for å forkorte koden, bruke trenden Helper som vi allerede har opprettet.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis