الفروقات بين الكلاس والإنترفيس في PHP

في البرمجة الكائنية التوجه (OOP) في PHP، تُعد الكلاسات (Classes) والإنترفيسات (Interfaces) من الأدوات الأساسية لبناء الهياكل البرمجية. بينما يتشارك كلاهما في بعض المفاهيم، فإن لكل منهما استخدامات وخصائص مميزة. في هذا المقال، سنستعرض الفروقات بين الكلاس والإنترفيس في PHP.

ما هو الكلاس (Class)؟

الكلاس في PHP هو قالب يُستخدم لإنشاء كائنات (Objects) تحتوي على خصائص (Properties) وطرق (Methods). الكلاس يمكن أن يحتوي على منطق التنفيذ الفعلي للعمليات ويمكن أن يرث من كلاس آخر باستخدام الوراثة (Inheritance).

إليك مثال بسيط لكلاس:


<?php
class Car {
   public $make;
   public $model;
   public $year;

   public function startEngine() {
      return "المحرك يعمل";
   }
}

# إنشاء كائن من الكلاس
$myCar = new Car;
$myCar->startEngine();
?>

ما هو الإنترفيس (Interface)؟

الإنترفيس في PHP هو نوع خاص من القوالب يُستخدم لتحديد مجموعة من الدوال (Methods) التي يجب على أي كلاس يطبق هذا الإنترفيس أن يحتوي عليها. الإنترفيس لا يحتوي على منطق التنفيذ الفعلي؛ بل يُحدد فقط توقيع الدوال (Method Signatures) التي يجب تنفيذها في الكلاس الذي يطبقه.

إليك مثال لإنترفيس:


<?php
interface Vehicle {
   public function startEngine();
   public function stopEngine();
}

# تطبيق الإنترفيس في كلاس
class Car implements Vehicle {
   public function startEngine() {
      echo "المحرك يعمل";
   }

   public function stopEngine() {
      echo "المحرك متوقف";
   }
}

# إنشاء كائن من الكلاس وتطبيق الطرق
$myCar = new Car;
$myCar->startEngine();
$myCar->stopEngine();
?>

الفروقات الرئيسية بين الكلاس والإنترفيس

  • الوظيفة: الكلاس يمكن أن يحتوي على منطق التنفيذ الفعلي، بينما الإنترفيس يحدد فقط توقيعات الدوال التي يجب على الكلاس الذي يطبقه أن ينفذها.
  • الوراثة: الكلاس يمكنه أن يرث من كلاس واحد فقط (Single Inheritance)، بينما يمكن للكلاس أن يطبق عدة إنترفيسات (Multiple Interfaces).
  • الخصائص: الكلاس يمكن أن يحتوي على خصائص (Properties) ودوال مع منطق التنفيذ. الإنترفيس لا يمكنه أن يحتوي على خصائص، بل يقتصر على الدوال بدون تنفيذ.
  • إجبار التنفيذ: عند تطبيق إنترفيس، يجب على الكلاس أن ينفذ كل الدوال المحددة في الإنترفيس، وإلا ستظهر أخطاء. بينما في الوراثة من كلاس، يمكن للكلاس الابن (Child Class) أن يتجاوز (Override) أو يستخدم (Inherit) الدوال الموجودة في الكلاس الأب (Parent Class).

متى نستخدم الكلاس ومتى نستخدم الإنترفيس؟

يتم استخدام الكلاس عندما تريد بناء قالب يحتوي على بيانات وسلوكيات يمكن استخدامها وإنشاؤها ككائنات مستقلة. يمكن للكلاسات أن تكون متخصصة أو عامة حسب الاحتياجات.

أما الإنترفيس، فيُستخدم عندما تريد فرض قواعد معينة على مجموعة من الكلاسات المختلفة، للتأكد من أن جميع هذه الكلاسات تطبق مجموعة معينة من الدوال، حتى لو كانت تنتمي إلى تسلسلات وراثية مختلفة.

الخلاصة

الفهم الجيد للفروقات بين الكلاس والإنترفيس في PHP يُساعد في بناء تطبيقات أكثر تنظيمًا وقابلية للصيانة. الكلاس يوفر منطق التنفيذ والبيانات، بينما الإنترفيس يحدد الهيكل العام الذي يجب على الكلاس اتباعه دون تقديم منطق التنفيذ.