التعرف على الوراثة في PHP وكيفية استخدامها

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 26 ديسمبر 2024

محتوى المقال

التعرف على الوراثة في PHP وكيفية استخدامها

الوراثة (Inheritance) هي واحدة من المبادئ الأساسية في البرمجة الكائنية التوجه (OOP) وتُستخدم لإعادة استخدام الكود وتنظيمه بشكل أفضل. في PHP، تسمح الوراثة لفئة (Class) بالاستفادة من الخصائص والطرق الموجودة في فئة أخرى، مما يتيح إنشاء فئات جديدة بناءً على فئات موجودة بالفعل.

ما هي الوراثة في PHP؟

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

إنشاء فئة أساسية (Parent Class)

لنبدأ بإنشاء فئة أساسية تُسمى Vehicle تمثل مركبة عامة:

<?php
class Vehicle {
   public $make;
   public $model;

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

الفئة Vehicle تحتوي على خصائص $make و$model ودالة startEngine التي تُرجع رسالة عند تشغيل المحرك.

إنشاء فئة فرعية (Child Class)

الآن، لننشئ فئة فرعية تُسمى Car ترث من الفئة Vehicle. سنضيف خاصية جديدة ودالة إضافية في الفئة الفرعية:

<?php
class Car extends Vehicle {
   public $year;

   public function displayInfo() {
      return $this->make . " " . $this->model . " " . $this->year;
   }
}

# إنشاء كائن من الفئة الفرعية واستخدام الخصائص والدوال
$myCar = new Car;
$myCar->make = "تويوتا";
$myCar->model = "كورولا";
$myCar->year = 2023;

echo $myCar->startEngine(); # ورثت من الفئة الأساسية
echo $myCar->displayInfo(); # مُعرفة في الفئة الفرعية
?>

في هذا المثال، الفئة Car ترث من الفئة Vehicle وتستفيد من الخصائص والدوال المعرفة فيها. الفئة Car تضيف خاصية جديدة $year ودالة جديدة displayInfo.

تجاوز الدوال (Overriding Methods)

يمكن للفئة الفرعية أن تتجاوز (Override) دوال الفئة الأساسية لتعريف سلوك مختلف. لنقم بتجاوز دالة startEngine في الفئة Car:

<?php
class Car extends Vehicle {
   public $year;

   public function startEngine() {
      return "تشغيل محرك السيارة";
   }

   public function displayInfo() {
      return $this->make . " " . $this->model . " " . $this->year;
   }
}

# إنشاء كائن واستخدام الدوال
$myCar = new Car;
$myCar->make = "تويوتا";
$myCar->model = "كورولا";
$myCar->year = 2023;

echo $myCar->startEngine(); # الدالة المُتجاوزة
echo $myCar->displayInfo();
?>

في هذا المثال، دالة startEngine تم تجاوزها في الفئة Car لتعطي رسالة مختلفة عند تشغيل المحرك.

الوصول إلى دوال الفئة الأم باستخدام parent::

إذا كنت بحاجة لاستدعاء دالة من الفئة الأم داخل الفئة الفرعية بعد تجاوزها، يمكنك استخدام الكلمة المفتاحية parent:::

<?php
class Car extends Vehicle {
   public function startEngine() {
      echo "تشغيل محرك السيارة... ";
      echo parent::startEngine();
   }
}

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

في هذا المثال، دالة startEngine في الفئة Car تستدعي دالة startEngine من الفئة الأم Vehicle باستخدام parent::startEngine.

الخلاصة

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

طور مهاراتك: مقالات يجب قراءتها في البرمجة