⊗ppOpIfInr 65 of 107 menu

ინტერფეისები OOP-ში PHP-ში

როგორც უკვე იცით, აბსტრაქტულმა კლასებმა წარმოადგინეს მეთოდების ნაკრები საკუთარი შთამომავლებისთვის. ნაწილი ამ მეთოდების შეიძლება რეალიზებული იყოს თავად კლასში, ხოლო მეთოდების ნაწილი შეიძლება გამოცხადდეს აბსტრაქტულად და მოითხოვდეს რეალიზაციას შვილობილ კლასებში.

წარმოვიდგინოთ სიტუაცია, როდესაც თქვენი აბსტრაქტული კლასი წარმოადგენს მხოლოდ აბსტრაქტული პუბლიკური მეთოდების ნაკრებს, არ ამატებს მეთოდებს რეალიზაციით.

ფაქტობრივად, თქვენი მშობელი კლასი აღწერს ინტერფეისს შთამომავლების, ანუ ნაკრებს მათი პუბლიკური მეთოდების, სავალდებულო რეალიზაციისთვის.

რატომ გვჭირდება ეს: რომ პროგრამირების დროს დავუშვათ ნაკლები შეცდომა - აღწეროთ ყველა საჭირო მეთოდი მშობელ კლასში, ჩვენ შეგვიძლია ვიყოთ დარწმუნებულები იმაში, რომ ყველა შთამომავალმა მათ ნამდვილად განახორციელოს.

როდის დაგვეხმარება ეს: დავუშვათ, ჩვენ შევქმნით ჩვენს მშობელ კლასს და რამდენიმე შთამომავალს მასში. თუ შთამომავალი გარკვეული პერიოდის შემდეგ, მაგალითად, ერთი თვის შემდეგ, გადავწყვიტოთ შევქმნათ კიდევ ერთი შთამომავალი, აუცილებლად უკვე დაგვავიწყდება დეტალები ჩვენი კოდის და სავსებით შეიძლება დაგვავიწყდეს დაწეროთ რეალიზაცია რომელიმე მეთოდის ახალ შთამომავალში. თუმცა, თავად PHP არ მოგცემთ დაკარგოთ მეთოდი - და უბრალოდ გამოიტანს შეცდომას.

იგივე ეხება სხვა პროგრამისტს, რომელიც მუშაობს თქვენს პროექტზე. დავუშვათ, მშობელი კლასის კოდი დაწერეთ თქვენ, და შემდეგ თქვენმა კოლეგამ გადაწყვიტა შექმნას კიდევ ერთი შთამომავალი. თქვენს კოლეგასაც არ გამოუვათ წყვილი მეთოდის დაკარგვა.

თუმცა, არის პრობლემა: ფაქტობრივად, ჩვენ გავაკეთეთ ჩვენი მშობელი კლასი იმისთვის, რომ დავწეროთ მასში აბსტრაქტული პუბლიკური მეთოდები, მაგრამ ჩვენ თვითონ ან ჩვენი კოლეგა გვაქვს შესაძლებლობა შემთხვევით დავამატოთ ამ კლასში არა პუბლიკური მეთოდი ან არა აბსტრაქტული.

დავუშვათ, ჩვენ გვინდა ფიზიკურად ავკრძალოთ მშობელში სხვა მეთოდების გაკეთება, გარდა აბსტრაქტული პუბლიკურისა. PHP-ში ამისთვის აბსტრაქტული კლასების ნაცვლად შეგიძლიათ გამოიყენოთ ინტერფეისები.

ინტერფეისები წარმოადგენენ კლასებს, რომელთა ყველა მეთოდი არის პუბლიკური და რომლებსაც არ გააჩნიათ რეალიზაცია. მეთოდების კოდი უნდა რეალიზებულ იქნას ინტერფეისების შვილობილი კლასების მიერ.

ინტერფეისები გამოცხადებულია ისევე, როგორც ჩვეულებრივი კლასები, მაგრამ გამოყენებით საკვანძო სიტყვა interface სიტყვის ნაცვლად class.

ინტერფეისებისგან მემკვიდრეობისთვის გამოიყენება ცოტა სხვა ტერმინოლოგია: ამბობენ, რომ კლასები არ იღებენ მემკვიდრეობას ინტერფეისებისგან, არამედ ახორციელებენ მათ. შესაბამისად, სიტყვის ნაცვლად extends უნდა გამოიყენოთ საკვანძო სიტყვა implements.

შეუძლებელია ინტერფეისის ობიექტის შექმნა. ყველა მეთოდი ინტერფეისის უნდა იყოს გამოცხადებული როგორც public და არ უნდა ჰქონდეთ რეალიზაცია. ინტერფეისს შეიძლება ჰქონდეს მხოლოდ მეთოდები, მაგრამ არა თვისებები. ასევე შეუძლებელია ინტერფეისის და კლასის გაკეთება ერთი და იგივე სახელით.

ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა