آموزش برنامه نویسی PHP-جلسه چهاردهم

آموزش برنامه نویسی PHP-جلسه چهاردهم

برای نوشتن برنامه های بزرگ نیازمند یک ساختار منظم هستیم که تا بتوانیم از داده‌ها به بهترین وجه استفاده کنیم.

برنامه‌نویسی شی‌گرا در PHP چیست؟ آموزش OOP در PHP

برنامه‌نویسی شی‌گرا (Object-Oriented Programming یا OOP) یکی از مهم‌ترین و پرکاربردترین روش‌های برنامه‌نویسی است که به توسعه‌دهندگان کمک می‌کند کدهای خود را به شکل منظم‌تر، قابل فهم‌تر، قابل توسعه و قابل نگهداری بنویسند.

در PHP نیز برنامه‌نویسی شی‌گرا نقش بسیار مهمی دارد و تقریباً تمام پروژه‌های بزرگ و حرفه‌ای PHP از مفاهیم OOP استفاده می‌کنند. فریم‌ورک‌های محبوبی مانند Laravel نیز بر پایه مفاهیم شی‌گرایی ساخته شده‌اند.

در این مقاله با مفهوم برنامه‌نویسی شی‌گرا در PHP آشنا می‌شویم و مفاهیمی مانند Class، Object، Property و Method را بررسی می‌کنیم.


OOP در PHP چیست؟

OOP مخفف عبارت Object-Oriented Programming به معنی برنامه‌نویسی شی‌گرا است.

در این روش، برنامه را بر اساس اشیا (Object) و ارتباط میان آن‌ها طراحی می‌کنیم. هر شیء می‌تواند ویژگی‌ها و رفتارهای مخصوص به خودش را داشته باشد.

برای مثال، فرض کنید می‌خواهیم یک سیستم مدیریت دانشگاه طراحی کنیم. در این سیستم موجودیت‌های مختلفی وجود دارند، مانند:

  • دانشجو
  • استاد
  • درس
  • دانشگاه
  • کلاس
  • انتخاب واحد

هرکدام از این موجودیت‌ها می‌توانند ویژگی‌ها و رفتارهای خاص خودشان را داشته باشند.

برای مثال یک دانشجو می‌تواند ویژگی‌هایی مانند:

  • نام
  • نام خانوادگی
  • شماره دانشجویی
  • رشته
  • معدل

داشته باشد.

همچنین می‌تواند رفتارهایی مانند:

  • انتخاب درس
  • حذف درس
  • مشاهده نمرات
  • پرداخت شهریه

داشته باشد.

بنابراین در برنامه‌نویسی شی‌گرا می‌توانیم موجودیت‌های واقعی را به شکل Object در برنامه مدل کنیم.


چرا از برنامه‌نویسی شی‌گرا استفاده می‌کنیم؟

در پروژه‌های کوچک ممکن است بتوانیم تمام کدها را با روش‌های ساده و بدون استفاده از OOP بنویسیم؛ اما با بزرگ‌تر شدن پروژه، مدیریت این کدها دشوارتر می‌شود.

برنامه‌نویسی شی‌گرا به ما کمک می‌کند پروژه را به بخش‌های کوچک‌تر و منطقی تقسیم کنیم.

برخی از مهم‌ترین مزایای OOP عبارت‌اند از:

1. نظم بیشتر در کدها

کدهای مرتبط با یک موجودیت در یک کلاس قرار می‌گیرند و ساختار پروژه منظم‌تر می‌شود.

2. استفاده مجدد از کد

با استفاده از کلاس‌ها می‌توانیم یک ساختار را یک بار ایجاد کرده و در قسمت‌های مختلف برنامه از آن استفاده کنیم.

3. نگهداری آسان‌تر

وقتی پروژه ساختار مناسبی داشته باشد، پیدا کردن و اصلاح خطاها ساده‌تر خواهد بود.

4. توسعه آسان‌تر پروژه

در پروژه‌های بزرگ، اضافه کردن قابلیت‌های جدید با استفاده از ساختار شی‌گرا ساده‌تر و قابل مدیریت‌تر است.

5. مناسب برای پروژه‌های بزرگ

فریم‌ورک‌ها و نرم‌افزارهای بزرگ PHP معمولاً از مفاهیم شی‌گرایی استفاده می‌کنند و آشنایی با OOP برای کار حرفه‌ای با PHP اهمیت زیادی دارد.


مفهوم Class در PHP چیست؟

Class یا کلاس را می‌توانیم به عنوان یک قالب یا نقشه برای ساخت Objectها در نظر بگیریم.

کلاس خودش معمولاً یک نمونه مشخص از موجودیت نیست؛ بلکه مشخص می‌کند Objectهایی که از آن ساخته می‌شوند چه ویژگی‌ها و رفتارهایی داشته باشند.

برای مثال، اگر بخواهیم ماشین‌ها را در برنامه خودمان مدل کنیم، می‌توانیم یک کلاس به نام Car ایجاد کنیم.

class Car
{
    
}

در اینجا یک کلاس به نام Car ساخته‌ایم.

می‌توانیم ویژگی‌ها و رفتارهای مربوط به ماشین را داخل این کلاس قرار دهیم.


Property چیست؟

ویژگی‌های یک شیء در PHP معمولاً به عنوان Property تعریف می‌شوند.

برای مثال یک ماشین می‌تواند ویژگی‌هایی مانند رنگ، مدل و سرعت داشته باشد.

class Car
{
    public $color;
    public $model;
    public $speed;
}

در این مثال سه Property برای کلاس Car تعریف کرده‌ایم:

  • color برای رنگ ماشین
  • model برای مدل ماشین
  • speed برای سرعت ماشین

بنابراین Propertyها در واقع داده‌ها و ویژگی‌های یک Object را مشخص می‌کنند.


Method چیست؟

رفتارهای یک شیء را در کلاس با استفاده از Method تعریف می‌کنیم.

Method در واقع یک تابع است که داخل کلاس قرار می‌گیرد.

برای مثال ماشین می‌تواند حرکت کند، ترمز بگیرد و بوق بزند.

class Car
{
    public $color;
    public $model;

    public function move()
    {
        echo "ماشین در حال حرکت است";
    }

    public function brake()
    {
        echo "ماشین ترمز کرد";
    }

    public function horn()
    {
        echo "بوق";
    }
}

در این مثال:

  • move() یک رفتار برای حرکت ماشین است.
  • brake() رفتار ترمز کردن را مشخص می‌کند.
  • horn() رفتار بوق زدن را مشخص می‌کند.

پس به طور خلاصه:

Property = ویژگی

Method = رفتار


Object در PHP چیست؟

اگر Class را به عنوان یک قالب در نظر بگیریم، Object یا شیء، نمونه‌ای است که از روی آن قالب ساخته می‌شود.

برای ساخت یک Object در PHP از کلمه کلیدی new استفاده می‌کنیم.

$car = new Car();

در اینجا از کلاس Car یک Object ساخته‌ایم و آن را داخل متغیر $car قرار داده‌ایم.

حالا می‌توانیم ویژگی‌های Object را مقداردهی کنیم:

$car->color = "Red";
$car->model = "BMW";

و برای اجرای Methodهای آن نیز از عملگر -> استفاده می‌کنیم:

$car->move();

خروجی:

ماشین در حال حرکت است

ساخت چند Object از یک Class

یکی از نکات مهم در برنامه‌نویسی شی‌گرا این است که می‌توانیم از یک Class، چندین Object مختلف ایجاد کنیم.

برای مثال:

$car1 = new Car();
$car2 = new Car();
$car3 = new Car();

هر سه Object از کلاس Car ساخته شده‌اند، اما می‌توانند اطلاعات متفاوتی داشته باشند.

مثلاً:

$car1->color = "Red";
$car2->color = "Blue";
$car3->color = "Black";

در این حالت سه ماشین مختلف داریم که هرکدام Object مستقلی هستند.

به عبارت ساده:

Class مانند نقشه یا قالب است و Object نمونه‌ای است که از روی آن قالب ساخته می‌شود.


مثال واقعی‌تر از Class و Object

فرض کنید یک فروشگاه اینترنتی داریم و می‌خواهیم محصولات را در برنامه مدیریت کنیم.

هر محصول می‌تواند ویژگی‌هایی مانند:

  • نام محصول
  • قیمت
  • برند
  • موجودی

داشته باشد.

همچنین می‌تواند رفتارهایی مانند:

  • نمایش اطلاعات
  • تغییر قیمت
  • بررسی موجودی

داشته باشد.

می‌توانیم برای آن یک کلاس ایجاد کنیم:

class Product
{
    public $name;
    public $price;
    public $brand;
    public $stock;

    public function showInfo()
    {
        echo $this->name;
    }
}

حالا می‌توانیم از این کلاس چند Object بسازیم:

$product1 = new Product();
$product2 = new Product();

اطلاعات هر محصول را نیز جداگانه مشخص کنیم:

$product1->name = "Laptop";
$product1->price = 50000;

$product2->name = "Phone";
$product2->price = 30000;

در این مثال، Product یک Class است و $product1 و $product2 دو Object ساخته‌شده از آن هستند.


کلمه کلیدی $this در PHP چیست؟

در برنامه‌نویسی شی‌گرا با مفهوم مهمی به نام $this روبه‌رو می‌شویم.

$this به Object فعلی اشاره می‌کند.

برای مثال:

class Product
{
    public $name;

    public function showName()
    {
        echo $this->name;
    }
}

در اینجا $this->name یعنی Property مربوط به Object فعلی.

اگر بنویسیم:

$product = new Product();

$product->name = "Laptop";

$product->showName();

مقدار Laptop نمایش داده می‌شود.


تفاوت Class و Object چیست؟

تفاوت Class و Object یکی از مفاهیم پایه‌ای OOP است.

ClassObject
یک قالب یا نقشه استنمونه‌ای از کلاس است
مشخص می‌کند Object چه ویژگی‌هایی داشته باشددارای مقادیر واقعی برای ویژگی‌هاست
می‌تواند Property و Method داشته باشداز Property و Methodهای کلاس استفاده می‌کند
می‌توان از یک Class چند Object ساختهر Object نمونه‌ای مستقل است

برای درک بهتر می‌توانیم یک مثال ساده بزنیم:

Class: ماشین

Objectها:

  • ماشین قرمز
  • ماشین آبی
  • ماشین مشکی

همه این ماشین‌ها ساختار مشترکی دارند، اما هرکدام می‌توانند اطلاعات متفاوتی داشته باشند.


چهار مفهوم اصلی برنامه‌نویسی شی‌گرا

OOP فقط به Class و Object محدود نمی‌شود. در ادامه مسیر یادگیری برنامه‌نویسی شی‌گرا با مفاهیم مهم دیگری نیز آشنا می‌شویم.

چهار مفهوم اصلی OOP عبارت‌اند از:

1. Encapsulation — کپسوله‌سازی

کپسوله‌سازی به معنی قرار دادن داده‌ها و رفتارهای مرتبط در یک واحد و همچنین کنترل نحوه دسترسی به آن‌هاست.

در PHP برای این کار از سطح دسترسی‌هایی مانند:

public
private
protected

استفاده می‌کنیم.


2. Inheritance — ارث‌بری

در ارث‌بری، یک کلاس می‌تواند ویژگی‌ها و رفتارهای یک کلاس دیگر را به ارث ببرد.

برای مثال می‌توانیم یک کلاس Animal داشته باشیم و کلاس‌هایی مانند Cat و Dog را از آن ایجاد کنیم.

class Animal
{
    public function eat()
    {
        echo "Animal is eating";
    }
}

class Dog extends Animal
{
    
}

در اینجا کلاس Dog از Animal ارث‌بری کرده است.


3. Polymorphism — چندریختی

چندریختی به ما اجازه می‌دهد یک ساختار یا متد مشترک، رفتارهای متفاوتی در کلاس‌های مختلف داشته باشد.

این مفهوم در پروژه‌های بزرگ و طراحی ساختارهای منعطف اهمیت زیادی دارد.


4. Abstraction — انتزاع

انتزاع یعنی جزئیات غیرضروری را از کاربر یا بخش‌های دیگر برنامه پنهان کنیم و فقط قسمت‌های مهم و موردنیاز را در اختیار آن‌ها قرار دهیم.

در PHP می‌توان از abstract class و interface برای پیاده‌سازی مفاهیم مرتبط با انتزاع استفاده کرد.


آیا یادگیری OOP در PHP ضروری است؟

اگر هدف شما یادگیری PHP در سطح مقدماتی باشد، می‌توانید ابتدا با مفاهیم پایه زبان شروع کنید؛ اما برای ورود به توسعه حرفه‌ای PHP، یادگیری OOP اهمیت بسیار زیادی دارد.

بسیاری از پروژه‌های واقعی PHP دارای ساختار شی‌گرا هستند و آشنایی با مفاهیمی مانند:

  • Class
  • Object
  • Property
  • Method
  • Constructor
  • Access Modifiers
  • Inheritance
  • Interface
  • Trait
  • Encapsulation
  • Polymorphism
  • Abstraction
  • Namespace

برای کار با پروژه‌های حرفه‌ای ضروری یا بسیار مهم است.

همچنین هنگام کار با فریم‌ورک‌هایی مانند Laravel، به صورت مداوم با کلاس‌ها و Objectها سروکار خواهید داشت.


جمع‌بندی

برنامه‌نویسی شی‌گرا یا OOP یک رویکرد برای طراحی و ساخت نرم‌افزار است که در آن برنامه را با استفاده از Objectها و ارتباط میان آن‌ها سازمان‌دهی می‌کنیم.

در این رویکرد، هر موجودیت می‌تواند ویژگی‌ها و رفتارهای مشخصی داشته باشد. برای تعریف ساختار یک موجودیت از Class استفاده می‌کنیم و سپس می‌توانیم چندین Object از آن Class ایجاد کنیم.

به عنوان مثال، اگر Car یک Class باشد، ماشین قرمز و ماشین آبی می‌توانند دو Object متفاوت از آن Class باشند.

به صورت خلاصه:

Class → قالب یا نقشه

Object → نمونه ساخته‌شده از Class

Property → ویژگی‌های Object

Method → رفتارهای Object

در ادامه یادگیری OOP در PHP، با مفاهیم مهمی مانند Constructor، Access Modifiers، Encapsulation، Inheritance، Polymorphism، Abstraction و Interface آشنا خواهیم شد. یادگیری این مفاهیم پایه مهمی برای ورود به توسعه پروژه‌های حرفه‌ای PHP و فریم‌ورک‌هایی مانند Laravel محسوب می‌شود.

اشتراک گذاری :
مریم گوهرزاد
نویسنده

مریم گوهرزاد

مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین و توسعه‌دهنده بلاکچین | متخصص Solidity | توسعه‌دهنده وب Full-Stackمن یک توسعه‌دهنده علاقه‌مند به فناوری‌های بلاکچین و وب ۳ هستم و در زمینه Solidity، توسعه قراردادهای هوشمند و ساخت برنامه‌های غیرمتمرکز (DApps) فعالیت می‌کنم. تمرکز من بر طراحی و پیاده‌سازی راهکارهایی است که در کنار بهره‌گیری از فناوری‌های نوین، عملکرد مناسب، امنیت و تجربه کاربری مطلوبی ارائه دهند.در کنار تخصص در حوزه بلاکچین، به عنوان یک توسعه‌دهنده وب Full-Stack نیز در طراحی و توسعه وب‌سایت‌ها و برنامه‌های تحت وب فعالیت می‌کنم. تجربه کار در بخش‌های Front-End و Back-End به من این امکان را داده است که پروژه‌ها را از مرحله ایده و طراحی تا توسعه و اجرا، با دیدی جامع دنبال کنم. در فرآیند توسعه، توجه ویژه‌ای به کدنویسی تمیز، معماری مناسب، طراحی واکنش‌گرا، عملکرد مطلوب و تجربه کاربری روان دارم.

TEST_VALUE_123
https://t.me/artarasaneh
tel:09193426251
https://wa.me/+989193426251
https://instagram.com/artarasaneh_com