PHP – کلاس‌ها و اشیاء (Classes and Objects)

برنامه‌نویسی شی‌گرا در PHP - کلاس‌ها و اشیاء

یک کلاس (Class) یک قالب برای اشیاء است و یک شیء (Object) یک نمونه از کلاس است.

سناریوی OOP

فرض کنیم یک کلاسی به نام Fruit داریم. یک میوه می‌تواند دارای ویژگی‌هایی مانند نام، رنگ، وزن و غیره باشد. ما می‌توانیم متغیرهایی مانند $name, $color و $weight را برای نگهداری مقادیر این ویژگی‌ها تعریف کنیم.

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

تعریف کلاس

یک کلاس با استفاده از کلمه کلیدی class تعریف می‌شود، که به دنبال آن نام کلاس و یک جفت آکولاد ({}) می‌آید. تمامی ویژگی‌ها و متدهای آن در داخل آکولادها قرار می‌گیرند:

<?php
class Fruit {
  // code goes here...
}
?>

در زیر یک کلاس به نام Fruit تعریف می‌کنیم که شامل دو ویژگی ($name و $color) و دو متد (set_name() و get_name()) برای تنظیم و گرفتن مقدار ویژگی $name است:

<?php
class Fruit {
  // ویژگی‌ها
  public $name;
  public $color;
  // متدها
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>

نکته: در یک کلاس، متغیرها به عنوان ویژگی‌ها (Properties) و توابع به عنوان متدها (Methods) شناخته می‌شوند!

تعریف اشیاء

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

اشیاء یک کلاس با استفاده از کلمه کلیدی new ایجاد می‌شوند.

در مثال زیر، $apple و $banana نمونه‌هایی از کلاس Fruit هستند:

مثال

<?php
class Fruit {
  // ویژگی‌ها
  public $name;
  public $color;
  // متدها
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>

در مثال زیر، ما دو متد دیگر به کلاس Fruit اضافه می‌کنیم، برای تنظیم و گرفتن مقدار ویژگی $color:

مثال

<?php
class Fruit {
  // ویژگی‌ها
  public $name;
  public $color;
  // متدها
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
  function set_color($color) {
    $this->color = $color;
  }
  function get_color() {
    return $this->color;
  }
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>

کلمه کلیدی $this در PHP

کلمه کلیدی $this به شیء جاری اشاره می‌کند و فقط داخل متدها در دسترس است.

به مثال زیر نگاه کنید:

مثال

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
?>

پس، کجا می‌توانیم مقدار ویژگی $name را تغییر دهیم؟ دو راه وجود دارد:

  1. داخل کلاس (با اضافه کردن یک متد set_name() و استفاده از $this):

مثال

<?php
class Fruit {
  public $name;
  function set_name($name) {
    $this->name = $name;
  }
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>

خارج از کلاس (با تغییر مستقیم مقدار ویژگی):

مثال

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>

استفاده از کلمه کلیدی instanceof

شما می‌توانید از کلمه کلیدی instanceof برای بررسی اینکه آیا یک شیء متعلق به یک کلاس خاص است استفاده کنید:

مثال

<?php
$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.