Koppelvlakke in OOP in PHP
Soos jy reeds weet, verteenwoordig abstrakte klasse 'n stel metodes vir hul nageslag. 'n Deel van hierdie metodes kan in die klas self geïmplementeer wees, en 'n deel van die metodes kan as abstrak verklaar word en implementering in afgeleide klasse vereis.
Stel jy voor 'n situasie waar jou abstrakte klas slegs 'n stel abstrakte publieke metodes voorstel, sonder om metodes met implementering by te voeg.
Feitlik beskryf jou ouerklas die koppelvlak van die nageslag, dit wil sê die stel van hul publieke metodes wat verpligtend is vir implementering.
Waarom het ons dit nodig: om minder foute te maak tydens programmering - deur alle nodige metodes in die ouerklas te beskryf, kan ons seker wees dat alle nageslagte hulle inderdaad sal implementeer.
Wanneer dit sal help: kom ons skep ons ouerklas en 'n paar nageslagte daarvoor. As ons dan na 'n ruk, byvoorbeeld, na 'n maand, besluit om nog 'n nageslag te skep, sal ons seker die besonderhede van ons kode vergeet het en kan maklik vergeet om die implementering van een of ander metode in die nuwe nageslag te skryf. Maar PHP self sal nie toelaat dat die metode verlore gaan nie - en sal bloot 'n fout gee.
Dieselfde geld vir 'n ander programmeerder, wat met jou projek werk. Kom ons sê die kode van die ouerklas is deur jou geskryf, en dan besluit jou kollega om nog 'n nageslag te skep. Jou kollega sal ook nie daarin slaag om 'n paar metodes te verloor nie.
Daar is egter 'n probleem: feitlik het ons ons ouerklas gemaak om daarin abstrakte publieke metodes te skryf, maar ons self of ons kollega het die moontlikheid om per ongeluk 'n nie-publieke metode of 'n nie-abstrakte een by hierdie klas te voeg.
Kom ons sê ons wil fisies verbied om ander metodes as abstrakte publieke in die ouer te maak. In PHP kan ons vir dit in plaas van abstrakte klasse koppelvlakke gebruik.
Koppelvlakke verteenwoordig klasse waarvan alle metodes publiek is en geen implementering het nie. Die kode van die metodes moet deur klas-nageslagte van die koppelvlakke geïmplementeer word.
Koppelvlakke word op dieselfde manier verklaar as gewone
klasse, maar deur die sleutelwoord interface
te gebruik in plaas van die woord class.
Vir oorerwing van koppelvlakke word 'n
ietwat ander terminologie gebruik: daar word gesê dat
klasse nie van koppelvlakke oorerf nie, maar hulle implementeer.
Gevolglik moet die sleutelwoord
implements gebruik word in plaas van die woord extends.
Dit is nie moontlik om 'n objek van 'n koppelvlak te skep nie. Alle metodes
van die koppelvlak moet as public verklaar word
en moet geen implementering hê nie. 'n Koppelvlak
kan slegs metodes hê, maar nie eienskappe nie.
Jy kan ook nie 'n koppelvlak en 'n klas met
dieselfde naam maak nie.