إنشاء دوال متكررة في الكلاس باستخدام الوراثة في PHP

الوراثة في البرمجة الكائنية التوجه (OOP) في PHP تُعد من الأدوات القوية لإعادة استخدام الكود. من خلال الوراثة، يمكن لفئات (Classes) متعددة أن تشترك في دوال (Methods) متكررة يتم تعريفها في فئة أساسية (Parent Class)، مما يساهم في تقليل التكرار وتنظيم الكود بشكل أكثر كفاءة.

تعريف الفئة الأساسية مع الدوال المتكررة

لنفترض أن لدينا تطبيقًا يتعامل مع عدة أنواع من المركبات، مثل السيارات والشاحنات والدراجات. يمكننا تعريف فئة أساسية تسمى Vehicle تحتوي على الدوال المشتركة بين جميع أنواع المركبات، مثل دالة startEngine وstopEngine:


<?php
class Vehicle {
   # دالة لتشغيل المحرك
   public function startEngine() {
      return "المحرك يعمل";
   }

   # دالة لإيقاف المحرك
   public function stopEngine() {
      return "المحرك متوقف";
   }
}
?>

في هذا المثال، الفئة Vehicle تحتوي على دالتين: startEngine وstopEngine، واللتين يمكن أن تكونا مشتركتين بين جميع المركبات.

وراثة الفئة الأساسية في الفئات الفرعية

الآن، يمكننا إنشاء فئات فرعية مثل Car وTruck وBike ترث من الفئة Vehicle لتستفيد من الدوال المتكررة:


<?php
# الفئة Car ترث من الفئة Vehicle
class Car extends Vehicle {
   public $numDoors;
}

# الفئة Truck ترث من الفئة Vehicle
class Truck extends Vehicle {
   public $payloadCapacity;
}

# الفئة Bike ترث من الفئة Vehicle
class Bike extends Vehicle {
   public $type;
}
?>

كل من الفئات Car وTruck وBike ترث الدوال startEngine وstopEngine من الفئة Vehicle، مما يلغي الحاجة لتكرار تعريف هذه الدوال في كل فئة على حدة.

إضافة دوال مخصصة في الفئات الفرعية

يمكن لكل فئة فرعية أن تضيف دوال مخصصة خاصة بها بالإضافة إلى الدوال التي ترثها من الفئة الأساسية. على سبيل المثال:


<?php
# الفئة Car تضيف دالة فتح الأبواب
class Car extends Vehicle {
   public function openDoors() {
      return "الأبواب مفتوحة";
   }
}

# الفئة Truck تضيف دالة تحميل البضائع
class Truck extends Vehicle {
   public function loadCargo() {
      return "البضائع محملة";
   }
}

# الفئة Bike تضيف دالة بدء ركوب الدراجة
class Bike extends Vehicle {
   public function startRiding() {
      return "بدء ركوب الدراجة";
   }
}
?>

كل فئة فرعية تضيف دالة مخصصة تعبر عن سلوك معين يميزها. الفئة Car تحتوي على دالة openDoors، والفئة Truck تحتوي على دالة loadCargo، والفئة Bike تحتوي على دالة startRiding.

استخدام الدوال المتكررة والدوال المخصصة

الآن، يمكننا استخدام الفئات الفرعية للاستفادة من الدوال المتكررة والدوال المخصصة:


<?php
# إنشاء كائن من الفئة Car واستخدام الدوال
$myCar = new Car;
echo $myCar->startEngine(); # دالة موروثة
echo $myCar->openDoors(); # دالة مخصصة

# إنشاء كائن من الفئة Truck واستخدام الدوال
$myTruck = new Truck;
echo $myTruck->startEngine(); # دالة موروثة
echo $myTruck->loadCargo(); # دالة مخصصة

# إنشاء كائن من الفئة Bike واستخدام الدوال
$myBike = new Bike;
echo $myBike->startEngine(); # دالة موروثة
echo $myBike->startRiding(); # دالة مخصصة
?>

النتائج ستظهر بالشكل التالي:

  • المحرك يعمل (موروثة)
  • الأبواب مفتوحة (مخصصة)
  • المحرك يعمل (موروثة)
  • البضائع محملة (مخصصة)
  • المحرك يعمل (موروثة)
  • بدء ركوب الدراجة (مخصصة)

الخلاصة

استخدام الوراثة في PHP لإنشاء دوال متكررة في الفئات الأساسية يسمح بإعادة استخدام الكود وتقليل التكرار، مما يجعل الكود أكثر نظافة وأسهل في الصيانة. يمكن للفئات الفرعية وراثة هذه الدوال وإضافة دوال مخصصة خاصة بها لتعزيز الوظائف وإضافة المزيد من السلوكيات.