التعرف على تعدد الأشكال (Polymorphism) في PHP
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 01 سبتمبر 2024محتوى المقال
- ما هو تعدد الأشكال (Polymorphism)؟
- تطبيق تعدد الأشكال في PHP
- تعدد الأشكال باستخدام الواجهات (Interfaces)
- الخلاصة
تعدد الأشكال (Polymorphism) هو مفهوم أساسي في البرمجة الكائنية (OOP)، وهو يشير إلى القدرة على استخدام كائنات مختلفة من فئات متعددة عبر واجهة مشتركة. يُمكّنك تعدد الأشكال من استدعاء نفس الطريقة على كائنات من فئات مختلفة، حيث تقوم كل فئة بتنفيذ تلك الطريقة بطريقة مختلفة. في هذا المقال، سنتعرف على كيفية استخدام تعدد الأشكال في PHP مع أمثلة عملية.
ما هو تعدد الأشكال (Polymorphism)؟
تعدد الأشكال يعني ببساطة "العديد من الأشكال". في البرمجة الكائنية، يمكن أن يكون لكائنات من فئات مختلفة طرق (Methods) بنفس الاسم، ولكن كل طريقة تعمل بشكل مختلف بناءً على الفئة التي تنتمي إليها. يُستخدم تعدد الأشكال لجعل الكود أكثر مرونة وقابلية للتوسع.
تطبيق تعدد الأشكال في PHP
لتطبيق تعدد الأشكال في PHP، نحتاج عادةً إلى استخدام الوراثة (Inheritance) أو الواجهات (Interfaces). الوراثة تسمح لنا بإنشاء فئة أساسية (Parent Class) وفئات فرعية (Child Classes) تتشارك في نفس الطريقة، ولكنها تنفذها بطرق مختلفة.
مثال باستخدام الوراثة
في هذا المثال، سنقوم بإنشاء فئة أساسية تُدعى Shape
، وفئتين فرعيتين تُدعيان Circle
وRectangle
. كل فئة فرعية ستقوم بتنفيذ الطريقة area()
بطريقة مختلفة.
<?php
class Shape {
public function area() {
return 'لم يتم تحديد الشكل';
}
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return pi() * $this->radius * $this->radius;
}
}
class Rectangle extends Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function area() {
return $this->width * $this->height;
}
}
// إنشاء كائنات من الفئات المختلفة
$circle = new Circle(5);
$rectangle = new Rectangle(4, 6);
// استدعاء طريقة area() على الكائنات
echo "مساحة الدائرة: " . $circle->area() . "
";
echo "مساحة المستطيل: " . $rectangle->area() . "
";
?>
في هذا المثال، تم إنشاء فئتين فرعيتين Circle
و Rectangle
من الفئة الأساسية Shape
. الفئة Circle
تقوم بتنفيذ طريقة area()
لحساب مساحة الدائرة، بينما تقوم الفئة Rectangle
بتنفيذ نفس الطريقة لحساب مساحة المستطيل.
تعدد الأشكال باستخدام الواجهات (Interfaces)
يمكنك أيضًا تطبيق تعدد الأشكال باستخدام الواجهات (Interfaces) في PHP. الواجهة هي عقد يحدد مجموعة من الدوال التي يجب على الفئة التي تنفذها أن تحتوي عليها. كل فئة يمكن أن تنفذ الواجهة بطريقة مختلفة.
مثال باستخدام واجهة
في هذا المثال، سنقوم بإنشاء واجهة تُدعى Drawable
، والتي تحتوي على دالة draw()
. بعد ذلك، سنقوم بإنشاء فئات تنفذ هذه الواجهة بطرق مختلفة.
<?php
interface Drawable {
public function draw();
}
class Circle implements Drawable {
public function draw() {
echo "رسم دائرة";
}
}
class Square implements Drawable {
public function draw() {
echo "رسم مربع";
}
}
// إنشاء كائنات من الفئات التي تنفذ الواجهة
$shapes = [new Circle(), new Square()];
// استدعاء طريقة draw() على كل كائن
foreach ($shapes as $shape) {
$shape->draw();
echo "
";
}
?>
في هذا المثال، الفئتان Circle
و Square
تنفذان واجهة Drawable
، وكل منهما يقدم تنفيذًا مختلفًا للدالة draw()
. عند استدعاء هذه الدالة على الكائنات، سيتم تنفيذ الطريقة الخاصة بكل فئة.
الخلاصة
تعدد الأشكال (Polymorphism) هو مفهوم قوي في البرمجة الكائنية يتيح لك كتابة كود أكثر مرونة وقابلية لإعادة الاستخدام. من خلال استخدام الوراثة والواجهات، يمكنك إنشاء فئات متعددة تشترك في نفس الواجهة ولكنها تقدم تنفيذًا مختلفًا للطرق. هذا يسهل التعامل مع الكائنات المختلفة في برامجك بطريقة موحدة وفعالة.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- إنشاء واستخدام الكلاس الثابتة (Static Classes) في PHP
- مقدمة إلى قواعد البيانات في PHP
- كيفية فرز المصفوفات في PHP
- كيفية دمج المصفوفات في PHP
- كيفية تحويل المصفوفات إلى سلاسل نصية والعكس
- التعامل مع المصفوفات الترابطية في PHP
- استخدام المصفوفات كقوائم وقواميس في PHP
- مقدمة إلى البرمجة الكائنية التوجه في PHP
- كيفية إنشاء كلاس (Class) في PHP
- إنشاء كائن (Object) من كلاس في PHP