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) به کلاس‌ها نمی‌گوید که چگونه متد را پیاده‌سازی کنند، هر حیوان می‌تواند به روش خود صدا ایجاد کند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

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

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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