⊗ppOpIfInr 65 of 107 menu

Interfeisi OOP PHP

Kā jūs jau zināt, abstraktās klases pārstāv sevi metožu kopumu saviem pēctečiem. Daļa no šīm metodēm var būt realizētas pašā klasē, bet daļa metožu var būt deklarētas kā abstraktas un prasa realizāciju bērnu klasēs.

Iedomāsimies situāciju, kad jūsu abstraktā klase pārstāv tikai abstraktu publisku metožu kopumu, neieviešot metodes ar implementāciju.

Faktiski jūsu vecāku klase apraksta interfeisu pēctečiem, tas ir, to publisko metožu kopumu, kas ir obligāti jārealizē.

Kāpēc mums tas ir vajadzīgs: lai programmējot pazūd mazāk kļūdu - aprakstot visas nepieciešamās metodes vecāku klasē, mēs varam būt pārliecināti par to, ka visi pēcteči tās patiešām implementēs.

Kad tas palīdzēs: pieņemsim, mēs izveidosim mūsu vecāku klasi un vairākus pēctečus tai. Ja pēc kāda laika, piemēram, pēc mēneša, mēs nolemsim izveidot vēl vienu pēcteci, droši vien mēs jau aizmirsīsim detaļas mūsu koda un varēsim aizmirst uzrakstīt kādas metodes realizāciju jaunajā pēctecī. Tomēr pats PHP neļaus pazaudēt metodi - un vienkārši izvadīs kļūdu.

Tas pats attiecas uz citu programmētāju, kas strādā ar jūsu projektu. Pieņemsim, ka vecāku klases kodu rakstījāt jūs, un tad jūsu kolēģis nolēma izveidot vēl vienu pēcteci. Arī jūsu kolēģim neizdosies pazaudēt pāris metodes.

Tomēr ir problēma: faktiski mēs izveidojām mūsu vecāku klasi tam, lai rakstītu tajā abstraktas publiskas metodes, bet mēs paši vai mūsu kolēģim ir iespēja nejauši pievienot šajā klasē ne publisku metodi vai ne abstraktu.

Pieņemsim, mēs vēlamies fiziski aizliegt veikt vecākklasē citas metodes, izņemot abstraktas publiskas. PHP šim nolūkam var izmantot interfeisus abstrakto klašu vietā.

Interfeisi pārstāv sevi klases, kurām visas metodes ir publiskas un bez implementācijas. Metožu kods jārealizē interfeisu bērnu klasēm.

Interfeisi tiek deklarēti tāpat kā parastās klases, bet izmantojot atslēgvārdu interface vārda class vietā.

Lai mantotu no interfeisiem, tiek lietota nedaudz atšķirīga terminoloģija: saka, ka klases nemanto no interfeisiem, bet realizē tos. Attiecīgi atslēgvārda extends vietā jālieto atslēgvārds implements.

Nevar izveidot interfeisa objektu. Visām interfeisa metodēm jābūt deklarētām kā public un tām nedrīkst būt implementācijas. Interfeisam var būt tikai metodes, nevis īpašības. Nevar arī izveidot interfeisu un klasi ar vienu un to pašu nosaukumu.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt