⊗ppOpIfInr 65 of 107 menu

Interfaces in OOP in PHP

Zoals je al weet, vertegenwoordigen abstracte klassen een reeks methoden voor hun nakomelingen. Een deel van deze methoden kan worden geïmplementeerd in de klasse zelf, en een deel van de methoden kan worden gedeclareerd als abstract en implementatie vereisen in de subklassen.

Stel je een situatie voor waarin je abstracte klasse alleen maar een reeks abstracte publieke methoden vertegenwoordigt, zonder methoden met implementatie toe te voegen.

Feitelijk beschrijft je bovenliggende klasse de interface van de nakomelingen, dat wil zeggen de reeks van hun publieke methoden, verplicht voor implementatie.

Waarom hebben we dit nodig: om bij het programmeren minder fouten te maken - door alle benodigde methoden te beschrijven in de bovenliggende klasse, kunnen we er zeker van zijn dat alle nakomelingen ze daadwerkelijk implementeren.

Wanneer dit helpt: stel dat we onze bovenliggende klasse en enkele nakomelingen ervan maken. Als we later, bijvoorbeeld over een maand, besluiten om nog een nakomeling te maken, zullen we zeker de details van onze code vergeten en kunnen we gemakkelijk vergeten de implementatie van een methode in de nieuwe nakomeling te schrijven. PHP zelf staat echter niet toe dat een methode verloren gaat - en zal simpelweg een fout geven.

Hetzelfde geldt voor een andere programmeur die aan je project werkt. Stel, jij schreef de code van de bovenliggende klasse, en vervolgens besluit je collega om nog een nakomeling te maken. Ook je collega zal er dan niet in slagen een paar methoden kwijt te raken.

Er is echter een probleem: feitelijk hebben we onze bovenliggende klasse gemaakt om er abstracte publieke methoden in te schrijven, maar wij zelf of onze collega hebben de mogelijkheid om per ongeluk een niet-publieke methode of een niet-abstrakte methode in deze klasse toe te voegen.

Stel dat we fysiek willen verbieden om in de bovenliggende klasse andere methoden te maken, behalve abstracte publieke. In PHP kunnen we hiervoor, in plaats van abstracte klassen, interfaces gebruiken.

Interfaces zijn klassen waarvan alle methoden publiek zijn en geen implementatie hebben. De code van de methoden moet worden geïmplementeerd door klassen die de interfaces implementeren (nakomelingen).

Interfaces worden op dezelfde manier gedeclareerd als gewone klassen, maar met het sleutelwoord interface in plaats van het woord class.

Voor overerving van interfaces wordt een iets andere terminologie gebruikt: men zegt dat klassen niet overerven van interfaces, maar ze implementeren. Dienovereenkomstig moet in plaats van het woord extends het sleutelwoord implements worden gebruikt.

Je kunt geen object van een interface aanmaken. Alle methoden van de interface moeten worden gedeclareerd als public en mogen geen implementatie hebben. Een interface kan alleen methoden hebben, geen properties. Je kunt ook geen interface en een klasse met dezelfde naam maken.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren