PHP OOP - واجهات
PHP - ما هي الواجهات؟
تسمح لك الواجهات بتحديد الطرق التي يجب على الفصل تنفيذها.
تجعل الواجهات من السهل استخدام مجموعة متنوعة من الفئات المختلفة بنفس الطريقة. عندما تستخدم فئة واحدة أو أكثر نفس الواجهة ، يشار إليها باسم "تعدد الأشكال".
يتم الإعلان عن الواجهات interface
بالكلمة الأساسية:
بناء الجملة
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP - واجهات مقابل فئات مجردة
الواجهة تشبه الفئات المجردة. الفرق بين الواجهات والفئات المجردة هو:
- لا يمكن أن يكون للواجهات خصائص ، بينما يمكن للفئات المجردة
- يجب أن تكون جميع طرق الواجهة عامة ، بينما تكون طرق الفئة المجردة عامة أو محمية
- جميع الطرق في الواجهة مجردة ، لذلك لا يمكن تنفيذها في التعليمات البرمجية والكلمة الأساسية المجردة ليست ضرورية
- يمكن للفئات تنفيذ واجهة أثناء التوريث من فئة أخرى في نفس الوقت
PHP - استخدام الواجهات
لتنفيذ واجهة ، يجب أن يستخدم الفصل implements
الكلمة الأساسية.
يجب أن تقوم الفئة التي تقوم بتنفيذ واجهة بتنفيذ كافة أساليب الواجهة.
مثال
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
من المثال أعلاه ، لنفترض أننا نرغب في كتابة برنامج يدير مجموعة من الحيوانات. هناك أفعال يمكن لجميع الحيوانات القيام بها ، لكن كل حيوان يقوم بذلك بطريقته الخاصة.
باستخدام الواجهات ، يمكننا كتابة بعض التعليمات البرمجية التي يمكن أن تعمل مع جميع الحيوانات حتى لو كان كل حيوان يتصرف بشكل مختلف:
مثال
<?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();
}
?>
شرح المثال
تعد كل من Cat و Dog و Mouse فئات تستخدم واجهة Animal ، مما يعني أنها جميعًا قادرة على إصدار صوت باستخدام هذه makeSound()
الطريقة. وبسبب هذا ، يمكننا إجراء حلقة عبر جميع الحيوانات ونطلب منهم إصدار صوت حتى لو لم نكن نعرف نوع كل حيوان.
نظرًا لأن الواجهة لا تخبر الفئات بكيفية تنفيذ الطريقة ، يمكن لكل حيوان إصدار صوت بطريقته الخاصة.