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