Интерфейсҳо дар ООП дар PHP
Чун шумо аллакай медонед, синфҳои абстрактӣ маҷмӯи методҳоро барои фарзандон ҳозира мекунанд. Як қисми ин методҳо метавонанд дар худи синф амалӣ карда шаванд, ва як қисми дигар метавонанд абстрактӣ эълон карда шаванд ва тақозои амалӣ кардан дар синфҳои фарзандро дошта бошанд.
Фарз кунем, ки синфи абстрактии шумо танҳо маҷмӯи методҳои абстрактии оммавиро ҳозира мекунад, методҳои бо амалӣ кардашударо илова намекунад.
Дар асл, синфи волидайни шумо интерфейс-и фарзандонро тавсиф мекунад, яъне маҷмӯи методҳои оммавии онҳо, ки барои амалӣ кардан ҳатмианд.
Барои чӣ мо ба ин ниёз дорем: то дар барномасозӣ хатоҳои камтар иртиқо кунем - бо тавсифи ҳама методҳои зарурӣ дар синфи волидайн, мо метавонем боварӣ ҳосил кунем, ки ҳамаи фарзандон онҳоро воқеан амалӣ мекунанд.
Вақте ки ин кӯмак мекунад: бигзор мо синфи волидайни худ ва чанд фарзанд ба он эҷод кунем. Агар фарзандон тавассути як муддати баъд, масалан, тавассути як моҳ, мо қарор диҳем, ки як фарзанди дигар эҷод кунем, албатта мо тафсилоти рамзи моро фаромӯш мекунем ва комилан метавонем навиштани амалӣ кардани ягон методро дар фарзанди нав фаромӯш кунем. Аммо худи PHP иҷозат намедиҳад, ки метод гум шавад - ва танҳо хато медиҳад.
Ҳамин чиз ба барномасози дигар, ки бо лоиҳаи шумо кор мекунад, нисбат дорад. Бигзор рамзи синфи волидайнро шумо навиштаед, ва сипас ҳамкори шумо қарор дод, ки як фарзанди дигар эҷод кунад. Ҳамкори шумо низ тавони гум кардани якчанд методро нахоҳад дошт.
Аммо, мушкилие вуҷуд дорад: дар асл, мо синфи волидайни худро барои он сохтем, ки навиштан дар он методҳои абстрактии оммавиро, аммо мо худамон ё ҳамкори мо имконияти илова кардани тасодуфан дар ин синф методҳои ғайри оммавӣ ё ғайри абстрактиро дорем.
Бигзор мо мехоҳем ба таври физикӣ манъ кардани сохтан дар волидайн методҳои дигар, ғайр аз методҳои абстрактии оммавӣ. Дар PHP барои ин ба ҷои синфҳои абстрактӣ метавон истифода бурд аз интерфейсҳо.
Интерфейсҳо синфҳое мебошанд, ки ҳамаи методҳои онҳо оммавӣ ва бе амалӣ кардашуда мебошанд. Рамзи методҳоро бояд синфҳои фарзанди интерфейсҳо амалӣ кунанд.
Интерфейсҳо ҳамчунин синфҳои оддӣ эълон карда мешаванд, аммо бо истифода аз калимаи interface
ба ҷои калимаи class.
Барои мероси гирифтан аз интерфейсҳо истифода мешавад аз
терминологияи каме дигар: мегӯянд, ки
синфҳо аз интерфейсҳо мерос намегиранд, балки амалӣ мекунанд
онҳоро. Мувофиқан ба ҷои калимаи extends
бояд истифода бурд аз калимаи калидӣ
implements.
Эҷоди объекти интерфейс мумкин нест. Ҳама методҳои
интерфейс бояд ҳамчун public эълон карда шаванд
ва набояд амалӣ кардашуда дошта бошанд. Интерфейс
метавонад танҳо методҳо дошта бошад, на хусусиятҳо.
Инчунин наметавон интерфейс ва синфро бо
ҳамон ном сохт.