مقدمة
في عالم تطوير البرمجيات، تظل مفاهيم البرمجة الشيئية أساسية وحيوية لتحقيق تصميم برمجي نظيف وقابل للصيانة. في هذا المقال، سنتناول بشكل خاص مفاهيمين هامين: البوليمورفيزم والتوريث.
البوليمورفيزم في PHP
البوليمورفيزم هو مفهوم يعنى بأن نفس الوظيفة يمكن أن تتصرف بطرق مختلفة حسب السياق. في PHP، يمكن تحقيق البوليمورفيزم بشكل بارع باستخدام الكلاسات الأبستراكتية والانتقال بينها.
مثال على البوليمورفيزم باستخدام كلاسات PHP
لنفترض أن لدينا كلاسًا أبستراكتيًا يسمى Base
يحتوي على خاصية $name
ووظيفة login()
.
abstract class Base {
protected $name = '';
public function login() {
return "اسمي هو {$this->name}: من الفئة {$this->className()} وأنا أبدأ الدخول... <br>";
}
private function className() {
return get_called_class();
}
}
ثم يمكننا إنشاء كلاسات تورث من Base
مثل Admin
, User
, و Guest
، وتنفيذ وظيفة login
بطرق مختلفة.
class Admin extends Base {
public function __construct($name) {
$this->name = $name;
}
}
class User extends Base {
public function __construct($name) {
$this->name = $name;
}
}
class Guest extends Base {
protected $name = 'Invitado';
}
ويمكننا استخدام هذه الكلاسات كما يلي:
$guest = new Guest();
echo $guest->login();
$user = new User('Italo Morales');
echo $user->login();
$admin = new Admin('Lynda Morales');
echo $admin->login();
وهكذا، نحصل على نتائج مختلفة لكل كلاس باستخدام نفس الوظيفة.
التوريث والهرمية في PHP
التوريث هو مفهوم آخر يسمح لنا بإنشاء هيكل هرمي من الكلاسات، حيث يمكن لكلاس أن يرث الخصائص والوظائف من كلاس آخر. في PHP، يمكننا تحقيق التوريث ببساطة باستخدام كلمة المفتاح extends
.
مثال على التوريث في PHP
لنفترض أن لدينا كلاس User
يحتوي على الخصائص الأساسية للمستخدم، ثم نقوم بإنشاء كلاس Admin
الذي يرث من User
دون الحاجة إلى إعادة كتابة الوظائف.
class User {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
class Admin extends User {
// لا حاجة لتعريف وظائف هنا
}
ويمكننا استخدام هذه الكلاسات كما يلي:
$admin = new Admin('Italo Morales');
echo $admin->getName(); // سيظهر: Italo Morales
هنا، يرث الكلاس Admin
الخصائص والوظائف من الكلاس User
.
الاستنتاج
في هذا المقال، استعرضنا مفاهيم البوليمورفيزم والتوريث في PHP، وكيف يمكن استخدامها لتحسين تصميم البرمجيات وجعلها أكثر قابلية للصيانة. إن تفهم هذه المفاهيم وتطبيقها بشكل صحيح يسهم في بناء رمز برمجي فعّال ومنظم.