در حال بارگذاری...

ارث‌بری در PHP

ارث‌بری در PHP یکی از اصول بنیادین برنامه‌نویسی شیءگرا (OOP) است که به توسعه‌دهندگان اجازه می‌دهد ویژگی‌ها و متدهای یک کلاس والد را در کلاس فرزند استفاده کنند. این قابلیت باعث می‌شود کدهای تکراری کاهش یافته، قابلیت نگهداری و توسعه سیستم‌ها بهبود یابد و طراحی برنامه‌ها ساختاریافته و قابل گسترش باشد. در پروژه‌های بزرگ PHP، استفاده از ارث‌بری امکان ایجاد سلسله‌مراتب کلاس‌ها را فراهم می‌کند و طراحی معماری نرم‌افزار را ساده‌تر می‌سازد.
در توسعه PHP، زمانی از ارث‌بری استفاده می‌کنیم که چندین کلاس مشابه وجود داشته باشند و بخواهیم ویژگی‌ها و رفتارهای مشترک را در یک کلاس والد تعریف کنیم و سپس کلاس‌های فرزند آن را گسترش دهند یا سفارشی کنند. برای مثال، در یک سیستم مدیریت کاربران می‌توان کلاس عمومی User داشت و کلاس‌های تخصصی مانند Admin و Customer از آن ارث‌بری کنند. در PHP، کلیدواژه‌هایی مانند extends، protected، public و parent:: برای پیاده‌سازی امن و موثر سلسله‌مراتب کلاس‌ها به کار می‌روند.
در این آموزش، شما یاد می‌گیرید چگونه ساختارهای کلاس قابل استفاده مجدد بسازید، اصول OOP را در PHP به درستی اعمال کنید و از اشتباهات رایجی مانند نشت حافظه، مدیریت ضعیف خطاها و الگوریتم‌های ناکارآمد جلوگیری نمایید. ارث‌بری PHP نقش کلیدی در طراحی سیستم‌ها و نگهداری آن‌ها دارد و به توسعه‌دهندگان امکان می‌دهد برنامه‌های حرفه‌ای و مقیاس‌پذیر بسازند.

مثال پایه

php
PHP Code
<?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 Code
<?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 برای ادامه یادگیری مفید هستند.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

4
سوالات
🎯
70%
برای قبولی
♾️
زمان
🔄
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود