ویژگی‌ها (Properties) و متدها (Methods) در کلاس‌های پی اچ پی

2

ویژگی‌ها (Properties) و متدها (Methods) در کلاس‌های پی اچ پی

در مقالات قبلی سایت پی اچ پی ساز و در بخش کلاس و شیء، با مفهوم کلاس‌ها و نحوه نمونه‌سازی (ایجاد شیء) آشنا شدیم. فهمیدیم که کلاس‌ها در واقع قالب‌هایی برای ساخت اشیاء هستند. اما یک قالب توخالی کاربرد زیادی ندارد! برای اینکه کلاس‌های ما مفید و کارآمد باشند، باید به آن‌ها داده‌ها و رفتارهایی اختصاص دهیم.

این داده‌ها و رفتارها در دنیای برنامه‌نویسی شی‌گرا (OOP) تحت عنوان ویژگی‌ها (Properties) و متدها (Methods) شناخته می‌شوند. در این مقاله به صورت دقیق و کاربردی به بررسی این دو مفهوم کلیدی در PHP می‌پردازیم.

ویژگی‌ها (Properties) چیستند؟

ویژگی‌ها در واقع همان متغیرهایی (Variables) هستند که در داخل یک کلاس تعریف می‌شوند. آن‌ها وظیفه دارند اطلاعات و وضعیت (State) مربوط به هر شیء را در خود ذخیره کنند.

به عنوان مثال، اگر کلاسی به نام Car (ماشین) داشته باشیم، ویژگی‌های آن می‌تواند رنگ، مدل، سال ساخت و سرعت فعلی باشد.

نحوه تعریف ویژگی‌ها

برای تعریف یک ویژگی، کافی است یک متغیر در بدنه کلاس ایجاد کنیم. در حالت پایه‌ای، قبل از نام متغیر از کلمه کلیدی public استفاده می‌کنیم (در مقالات آینده با سطوح دسترسی به طور کامل آشنا خواهیم شد).

PHP

<?php
class Car {
    // تعریف ویژگی‌ها
    public $color = "سفید"; // ویژگی با مقدار اولیه
    public $model;          // ویژگی بدون مقدار اولیه
    public $year;
}
?>

نحوه دسترسی به ویژگی‌ها در خارج از کلاس

برای خواندن یا تغییر مقدار یک ویژگی در خارج از کلاس، ابتدا باید یک شیء از آن کلاس بسازیم و سپس با استفاده از عملگر پیکان (->) به ویژگی مورد نظر دسترسی پیدا کنیم.

PHP

<?php
$myCar = new Car();

// تغییر مقدار ویژگی
$myCar->model = "پژو 207";

// خواندن مقدار ویژگی
echo "مدل ماشین: " . $myCar->model;
echo "<br>";
echo "رنگ ماشین: " . $myCar->color; // مقدار پیش‌فرض "سفید" چاپ می‌شود
?>

نکته مهم: دقت کنید که هنگام فراخوانی ویژگی‌ها با عملگر پیکان، علامت $ را برای نام ویژگی قرار نمی‌دهیم (myCar->model$ غلط است و $myCar->model صحیح است).

متدها (Methods) چیستند؟

متدها در واقع همان توابعی (Functions) هستند که در داخل یک کلاس تعریف می‌شوند. آن‌ها نشان‌دهنده رفتارها و کارهایی هستند که یک شیء می‌تواند انجام دهد.

در مثال کلاس Car، متدها می‌توانند شامل روشن شدن، حرکت کردن، ترمز گرفتن یا بوق زدن باشند. متدها می‌توانند با ویژگی‌های کلاس تعامل داشته باشند، مقادیر آن‌ها را تغییر دهند یا محاسباتی روی آن‌ها انجام دهند.

نحوه تعریف و فراخوانی متدها

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

PHP

<?php
class Car {
    public $model;

    // تعریف یک متد
    public function startEngine() {
        return "موتور روشن شد!";
    }
}

$myCar = new Car();

// فراخوانی متد
echo $myCar->startEngine();
?>

کلمه کلیدی $this : پل ارتباطی متدها و ویژگی‌ها

یکی از مهم‌ترین مفاهیم در متدهای PHP، کلمه کلیدی $this است. زمانی که شما درون یک متد هستید و می‌خواهید به متدها یا ویژگی‌های همان کلاس دسترسی پیدا کنید، باید از متغیر ویژه $this استفاده کنید.

کلمه $this در واقع به «شیء فعلی» اشاره می‌کند؛ یعنی شیئی که متد در حال حاضر روی آن فراخوانی شده است.

PHP

<?php
class User {
    public $firstName;
    public $lastName;

    public function setFullName($first, $last) {
        // اختصاص مقادیر ورودی به ویژگی‌های کلاس
        $this->firstName = $first;
        $this->lastName = $last;
    }

    public function getFullName() {
        // خواندن مقادیر ویژگی‌های کلاس
        return "نام کامل: " . $this->firstName . " " . $this->lastName;
    }
}

$user1 = new User();
$user1->setFullName("علی", "رضایی");
echo $user1->getFullName(); // خروجی: نام کامل: علی رضایی
?>

یک مثال کاربردی و جامع

برای درک بهتر ترکیب ویژگی‌ها و متدها، بیایید کلاس یک حساب بانکی (BankAccount) را شبیه‌سازی کنیم:

PHP

<?php
class BankAccount {
    // ویژگی‌ها
    public $accountNumber;
    public $balance = 0; // موجودی اولیه صفر است

    // متد برای واریز پول
    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount;
            return "مبلغ $amount واریز شد. ";
        }
        return "مبلغ واریزی نامعتبر است. ";
    }

    // متد برای نمایش موجودی
    public function showBalance() {
        return "موجودی فعلی حساب شما: " . $this->balance . " تومان";
    }
}

// ساخت یک حساب جدید
$myAccount = new BankAccount();
$myAccount->accountNumber = "123456789";

// واریز پول و نمایش موجودی
echo $myAccount->deposit(50000);
echo "<br>";
echo $myAccount->showBalance();
?>

نتیجه‌گیری

ویژگی‌ها و متدها دو بال اصلی برنامه‌نویسی شی‌گرا هستند که به کلاس‌های شما جان می‌بخشند. ویژگی‌ها اطلاعات را ذخیره می‌کنند و متدها عملیات و منطق برنامه را پیاده‌سازی می‌نمایند. با درک صحیح این دو مفهوم و استفاده درست از کلمه کلیدی $this، می‌توانید ساختارهای پیچیده و در عین حال منظمی برای پروژه‌های PHP خود ایجاد کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *