ارثبری در PHP
ارثبری در PHP یکی از اصول بنیادین برنامهنویسی شیءگرا (OOP) است که به توسعهدهندگان اجازه میدهد ویژگیها و متدهای یک کلاس والد را در کلاس فرزند استفاده کنند. این قابلیت باعث میشود کدهای تکراری کاهش یافته، قابلیت نگهداری و توسعه سیستمها بهبود یابد و طراحی برنامهها ساختاریافته و قابل گسترش باشد. در پروژههای بزرگ PHP، استفاده از ارثبری امکان ایجاد سلسلهمراتب کلاسها را فراهم میکند و طراحی معماری نرمافزار را سادهتر میسازد.
در توسعه PHP، زمانی از ارثبری استفاده میکنیم که چندین کلاس مشابه وجود داشته باشند و بخواهیم ویژگیها و رفتارهای مشترک را در یک کلاس والد تعریف کنیم و سپس کلاسهای فرزند آن را گسترش دهند یا سفارشی کنند. برای مثال، در یک سیستم مدیریت کاربران میتوان کلاس عمومی User
داشت و کلاسهای تخصصی مانند Admin
و Customer
از آن ارثبری کنند. در PHP، کلیدواژههایی مانند extends
، protected
، public
و parent::
برای پیادهسازی امن و موثر سلسلهمراتب کلاسها به کار میروند.
در این آموزش، شما یاد میگیرید چگونه ساختارهای کلاس قابل استفاده مجدد بسازید، اصول OOP را در PHP به درستی اعمال کنید و از اشتباهات رایجی مانند نشت حافظه، مدیریت ضعیف خطاها و الگوریتمهای ناکارآمد جلوگیری نمایید. ارثبری PHP نقش کلیدی در طراحی سیستمها و نگهداری آنها دارد و به توسعهدهندگان امکان میدهد برنامههای حرفهای و مقیاسپذیر بسازند.
مثال پایه
php<?php
// کلاس والد
class Vehicle {
protected $brand;
protected $model;
public function __construct($brand, $model) {
$this->brand = $brand;
$this->model = $model;
}
public function getDetails() {
return "برند: " . $this->brand . ", مدل: " . $this->model;
}
}
// کلاس فرزند از Vehicle ارثبری میکند
class Car extends Vehicle {
private $doors;
public function __construct($brand, $model, $doors) {
parent::__construct($brand, $model);
$this->doors = $doors;
}
public function getDetails() {
return parent::getDetails() . ", تعداد دربها: " . $this->doors;
}
}
// استفاده از کلاسها
$myCar = new Car("Toyota", "Corolla", 4);
echo $myCar->getDetails();
?>
در این مثال، کلاس Vehicle
شامل ویژگیهای protected
$brand
و $model
و متدی به نام getDetails()
است. ویژگیهای protected
فقط توسط کلاسهای فرزند و همان کلاس قابل دسترسی هستند و از دسترسی خارجی محافظت میشوند.
کلاس Car
با استفاده از کلیدواژه extends
از Vehicle
ارثبری میکند و تمام ویژگیها و متدهای آن را به ارث میبرد. ویژگی خصوصی $doors
به کلاس فرزند اضافه شده و متد getDetails()
در کلاس فرزند بازنویسی شده است. با استفاده از parent::getDetails()
، متد کلاس والد حفظ و گسترش داده شده است. این روش باعث افزایش قابلیت استفاده مجدد کد و ایجاد ساختار واضح و کارآمد در پروژههای PHP میشود.
مثال کاربردی
php<?php
// کلاس والد: User
class User {
protected $name;
protected $email;
public function __construct($name, $email) {
$this->name = $name;
$this->email = $email;
}
public function getProfile() {
return "نام: " . $this->name . ", ایمیل: " . $this->email;
}
}
// کلاس فرزند: Admin
class Admin extends User {
private $permissions = [];
public function __construct($name, $email, $permissions = []) {
parent::__construct($name, $email);
$this->permissions = $permissions;
}
public function getProfile() {
return parent::getProfile() . ", دسترسیها: " . implode(", ", $this->permissions);
}
public function addPermission($permission) {
if (!in_array($permission, $this->permissions)) {
$this->permissions[] = $permission;
}
}
}
// استفاده از کلاسها
$admin = new Admin("Alice", "[email protected]", ["edit", "delete"]);
$admin->addPermission("create");
echo $admin->getProfile();
?>
در مثال کاربردی، کلاس User
ویژگیها و متدهای عمومی را تعریف میکند. کلاس Admin
از آن ارثبری کرده و ویژگیهای اضافی مانند دسترسیها را اضافه میکند. با فراخوانی parent::__construct()
ویژگیهای کلاس والد مقداردهی میشوند.
متد getProfile()
بازنویسی شده و دسترسیها را نمایش میدهد و متد addPermission()
از افزودن دسترسیهای تکراری جلوگیری میکند. این مثال نشاندهنده کاربرد عملی ارثبری در سیستمهای مدیریت نقش و دسترسی است و اهمیت آن در پروژههای واقعی PHP را توضیح میدهد.
بهترین شیوهها و نکات کلیدی ارثبری در PHP:
- استفاده از ویژگیهای
protected
برای دسترسی فقط توسط کلاسهای فرزند. - فراخوانی همیشگی
parent::__construct()
در کلاس فرزند. - استفاده از
parent::method()
هنگام بازنویسی متدها برای حفظ عملکرد والد. -
جلوگیری از استفاده بیش از حد از ویژگیهای
public
.
اشتباهات رایج: -
اعلان تمام ویژگیها به صورت
public
. - فراخوانی نکردن سازنده کلاس والد.
-
نادیده گرفتن بهینهسازی حافظه و عملکرد با دادههای بزرگ.
بهینهسازی و امنیت: -
استفاده از ساختار داده مناسب مانند آرایهها.
- اعتبارسنجی ورودیها قبل از انجام عملیات.
- رعایت اصول SOLID و الگوهای طراحی در پروژهها.
📊 جدول مرجع
پیاچپی Element/Concept | Description | Usage Example |
---|---|---|
class | تعریف کلاس | class Vehicle { protected $brand; } |
extends | ارثبری کلاس فرزند از والد | class Car extends Vehicle {} |
protected | قابل دسترسی فقط برای کلاس فرزند | protected $model; |
parent::__construct() | فراخوانی سازنده کلاس والد | parent::__construct($name, $email); |
Method Overriding | بازنویسی متد در کلاس فرزند | public function getProfile() { parent::getProfile(); } |
ارثبری در PHP باعث افزایش قابلیت استفاده مجدد کد، نگهداری آسان و مقیاسپذیری پروژهها میشود. مفاهیم کلیدی شامل extends
، protected
، سازنده و بازنویسی متدها هستند. استفاده صحیح از ارثبری باعث کاهش کد تکراری و ایجاد سلسلهمراتب کلاسهای امن و ساختاریافته میشود.
گام بعدی: یادگیری اینترفیسها، کلاسهای انتزاعی و Traits برای افزایش انعطاف و استفاده مجدد از کد. تمرین مداوم به بهبود عملکرد، امنیت و طراحی کلاسها کمک میکند. منابع مستندات PHP و آموزشهای پیشرفته OOP برای ادامه یادگیری مفید هستند.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود