PHP – اینترفیس‌ها (Interfaces)

PHP - اینترفیس‌ها (Interfaces) چیستند؟

اینترفیس‌ها (Interfaces) به شما اجازه می‌دهند تا مشخص کنید یک کلاس باید چه متدهایی را پیاده‌سازی کند.

اینترفیس‌ها (Interfaces) استفاده از کلاس‌های مختلف به روشی مشابه را آسان می‌کنند. وقتی یک یا چند کلاس از یک اینترفیس (Interface) استفاده می‌کنند، به آن “پلی‌مورفیسم” (Polymorphism) گفته می‌شود.

اینترفیس‌ها (Interfaces) با استفاده از کلمه کلیدی interface اعلام می‌شوند:

نحو (Syntax)

<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

تفاوت اینترفیس‌ها (Interfaces) و کلاس‌های انتزاعی (Abstract Classes)

اینترفیس‌ها (Interfaces) مشابه کلاس‌های انتزاعی (Abstract Classes) هستند. تفاوت‌های بین اینترفیس‌ها (Interfaces) و کلاس‌های انتزاعی (Abstract Classes) عبارتند از:

  • اینترفیس‌ها (Interfaces) نمی‌توانند ویژگی (property) داشته باشند، در حالی که کلاس‌های انتزاعی (Abstract Classes) می‌توانند.
  • تمامی متدهای اینترفیس (Interface) باید public باشند، در حالی که متدهای کلاس انتزاعی (Abstract Class) می‌توانند public یا protected باشند.
  • تمامی متدهای یک اینترفیس (Interface) انتزاعی هستند، بنابراین نمی‌توانند در کد پیاده‌سازی شوند و استفاده از کلمه کلیدی abstract ضروری نیست.
  • کلاس‌ها می‌توانند یک اینترفیس (Interface) را پیاده‌سازی کنند در حالی که همزمان از کلاس دیگری ارث‌بری می‌کنند.

استفاده از اینترفیس‌ها (Using Interfaces)

برای پیاده‌سازی یک اینترفیس (Interface)، یک کلاس باید از کلمه کلیدی implements استفاده کند.

کلاسی که یک اینترفیس (Interface) را پیاده‌سازی می‌کند باید تمام متدهای آن اینترفیس (Interface) را پیاده‌سازی کند.

مثال (Example)

<?php
interface Animal {
  public function makeSound();
}
class Cat implements Animal {
  public function makeSound() {
    echo "Meow";
  }
}
$animal = new Cat();
$animal->makeSound();
?>

توضیح مثال (Example Explained)

در مثال بالا، فرض کنید که می‌خواهیم نرم‌افزاری بنویسیم که یک گروه از حیوانات را مدیریت کند. اعمالی وجود دارد که همه حیوانات می‌توانند انجام دهند، اما هر حیوان به شیوه خود این اعمال را انجام می‌دهد.

با استفاده از اینترفیس‌ها (Interfaces)، می‌توانیم کدی بنویسیم که برای تمام حیوانات کار کند حتی اگر هر حیوان به شیوه خود رفتار کند:

مثال (Example)

<?php
// تعریف اینترفیس (Interface definition)
interface Animal {
  public function makeSound();
}
// تعریف کلاس‌ها (Class definitions)
class Cat implements Animal {
  public function makeSound() {
    echo " Meow ";
  }
}
class Dog implements Animal {
  public function makeSound() {
    echo " Bark ";
  }
}
class Mouse implements Animal {
  public function makeSound() {
    echo " Squeak ";
  }
}
// ایجاد لیستی از حیوانات (Create a list of animals)
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);
// به حیوانات بگویید که صدا ایجاد کنند (Tell the animals to make a sound)
foreach($animals as $animal) {
  $animal->makeSound();
}
?>

توضیح مثال (Example Explained)

Cat، Dog و Mouse همگی کلاس‌هایی هستند که اینترفیس Animal را پیاده‌سازی می‌کنند، به این معنا که همگی قادر به ایجاد صدا با استفاده از متد makeSound() هستند. به همین دلیل، می‌توانیم از تمامی حیوانات عبور کنیم و به آن‌ها بگوییم که صدا ایجاد کنند حتی اگر ندانیم هر حیوان چه نوع حیوانی است.

از آنجا که اینترفیس (Interface) به کلاس‌ها نمی‌گوید که چگونه متد را پیاده‌سازی کنند، هر حیوان می‌تواند به روش خود صدا ایجاد کند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.