رابط ها در PHP
در این فصل به بررسی رابط ها در PHP می پردازیم، رابط ها یا همان interface در PHP مشابه کلاس های Abstract یا همان انتزاعی هستند.
interface ها به ما این اجازه را می دهند تا مشخص کنیم که کلاس ها باید چه متد هایی را پیاده سازی کند.
رابط ها استفاده از انواع کلاس های مختلف را با روشی مشابه آسان می کنند. هنگامی که یک یا چند کلاس از یک interface استفاده می کنند به آن polymorphism (چند ریختی) گفته می شود.
رابط ها در PHP با کلمه کلیدی interface
اعلام می شوند.
نحوه استفاده
تفاوت بین کلاس های Abstract و Interface ها
تفاوتی بین کلاس های Abstract و Interface ها هست که عبارتند از:
- interface ها نمی توانند پراپرتی (properties) داشته باشند، در حالی که کلاس های انتزاعی می توانند.
- تمام متد های (methods) رابط ها باید
public
باشند، در حالی که متد های کلاس abstract عمومی یا محافظت شده (protected) هستند. - تمام متد ها در یک interface انتزاعی (abstract) هستند، بنابراین نیازی به پیاده سازی آنها نیست و نباید از کلمه کلیدی
abstract
استفاده کنیم. - کلاس های فرزند همزمان که دارند از یک کلاس والد ارث بری می کنند می توانند از interface ها نیز استفاده کنند.
استفاده از interface ها در PHP
برای پیاده سازی یک interface
در یک کلاس باید از کلمه کلیدی implements
استفاده کنید.
هنگامی که یک کلاس رابطی را implements می کند باید تمام متد های interface را در خودش پیاده سازی و اعلان کند.
مثال
خروجی
Meow
در مثال بالا ما یک رابط تعریف کرده ایم با نام Animal و یک متد داخل آن تعریف کرده ایم تحت عنوان makeSound()
توجه داشته باشید که اکثر حیوانات دارای صوت یا صدا هستند که در واقع همین وجه مشترک آنها است اما صدای آنها با یک دیگر متفاوت است.
و با توجه به اینکه کلاس هایی که رابط ها را implements می کنند مجبور هستند متد های آن را نیز اعلان کنند ما توقع داریم که کلاس Cat متد makeSound()
را طوری کد نویسی و اعلان کند تا خروجی آن صدای حیوان مورد نظر باشد.
پس در واقع با interface کدی نوشتیم که برای تمامی حیوانات کار می کند حتی اگر آنها با یکدیگر متفاوت باشند.
مثال
خروجی
Meow Bark Squeak
توضیحات در رابطه با مثال بالا
کلاس های Cat و Dog و Mouse همگی رابط Animal را implements یا پیاده سازی می کنند، به این معنی که همه آنها می توانند با استفاده از متد makeSound()
صدا تولید کنند.
به همین ترتیب می توانیم حلقه ای ایجاد کنیم و بدون اینکه در نظر بگیریم این صدا مال چه حیوانی است، صدا ها را تولید کنیم.
همچنین با توجه به اینکه رابط به کلاس ها نمی گوید که چگونه این متد را پیاده سازی کنند، هر حیوانی می تواند به روش خود صدایی تولید کند.
یعنی شما می توانید بجای متن ساده از تگ audio در HTML استفاده کنید و به این شکل صدا گذاری کنید، محدودیتی در این مورد وجود ندارد.
آیا این مطلب برای شما مفید بود ؟