⊗ppOpIfInr 65 of 107 menu

Gränssnitt i OOP i PHP

Som du redan vet representerar abstrakta klasser en uppsättning metoder för sina ättlingar. En del av dessa metoder kan vara implementerade i själva klassen, medan en del metoder kan deklareras abstrakta och kräva implementation i underordnade klasser.

Föreställ dig en situation där din abstrakta klass endast representerar en uppsättning abstrakta publika metoder, utan att lägga till metoder med implementation.

I praktiken beskriver din föräldraklass gränssnittet för ättlingarna, det vill säga uppsättningen av deras publika metoder, obligatoriska för implementation.

Varför behöver vi detta: för att göra färre misstag när vi programmerar - genom att beskriva alla nödvändiga metoder i föräldraklassen kan vi vara säkra på att alla ättlingar verkligen implementerar dem.

När detta hjälper: låt oss skapa vår föräldraklass och flera ättlingar till den. Om vi sedan efter en tid, till exempel, efter en månad, bestämmer oss för att skapa ytterligare en ättling, kommer vi säkert att ha glömt detaljerna i vår kod och kan mycket väl glömma att skriva implementationen av någon metod i den nya ättlingen. Men själva PHP tillåter inte att metoden försvinner - och kommer helt enkelt att ge ett felmeddelande.

Detsamma gäller för en annan programmerare som arbetar med ditt projekt. Låt koden för föräldraklassen ha skrivits av dig, och sedan bestämmer din kollega sig för att skapa ytterligare en ättling. Din kollega kommer även inte att kunna tappa bort ett par metoder.

Det finns dock ett problem: i praktiken skapade vi vår föräldraklass för att skriva abstrakta publika metoder i den, men vi själva eller vår kollega har möjlighet att av misstag lägga till i denna klass en icke-publik metod eller en icke-abstrakt metod.

Låt oss säga att vi fysiskt vill förbjuda att göra andra metoder i föräldern, förutom abstrakta publika. I PHP kan man för detta, istället för abstrakta klasser, använda gränssnitt.

Gränssnitt representerar klasser där alla metoder är publika och saknar implementation. Koden för metoderna måste implementeras av klasser som är ättlingar till gränssnitten.

Gränssnitt deklareras på samma sätt som vanliga klasser, men med nyckelordet interface istället för ordet class.

För arv från gränssnitt används en något annorlunda terminologi: man säger att klasser inte ärver från gränssnitt, utan implementerar dem. Följaktligen ska man istället för ordet extends använda nyckelordet implements.

Man kan inte skapa ett objekt av ett gränssnitt. Alla metoder i ett gränssnitt måste deklareras som public och får inte ha implementation. Ett gränssnitt kan endast ha metoder, inte egenskaper. Man kan inte heller skapa ett gränssnitt och en klass med samma namn.

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