OOP - کلاس‌ها و اشیاء

از موتو کد، دانشنامهٔ برنامه‌نویسی
Main Page Tutorial
Php-menu.png
موارد آموزشی
فرم‌ها در PHP
PHP پیشرفته
شیء گرایی در PHP
۱OOP چیست؟
۲کلاس‌ها و اشیاء
۳متد سازنده
۴متد نابودگر
۵مشخص کننده‌های دسترسی
۶ارث بری
۷ثابت‌های کلاس
۸کلاس‌های Abstract
۹Traits
۱۰متدهای Static
۱۱ویژگی‌های Static
پایگاه داده MySQL
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP

یک کلاس الگویی برای اشیاء است، و یک شیء نیز نوعی از یک کلاس است. [۱]

مفهوم OOP[ویرایش | ویرایش]

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

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

تعریف یک کلاس[ویرایش | ویرایش]

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

شیوه نوشتار[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>


مشاهدهٔ نتیجه


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

تعریف اشیاء[ویرایش | ویرایش]

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

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

در مثال زیر، $apple و $banana اشیاء کلاس میوه (fruit) هستند:

مثال[ویرایش | ویرایش]

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  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 {
  // Properties
  public $name;
  public $color;

  // Methods
  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();
?>


مشاهدهٔ نتیجه


PHP - کلمه کلیدی $this[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

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

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

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

مثال[ویرایش | ویرایش]

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


مشاهدهٔ نتیجه


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

مثال[ویرایش | ویرایش]

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


مشاهدهٔ نتیجه


PHP - instanceof[ویرایش | ویرایش]

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

مثال[ویرایش | ویرایش]

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


مشاهدهٔ نتیجه



منابع آموزشی[ویرایش]