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
را تغییر دهیم؟ دو راه وجود دارد:
- داخل کلاس (با اضافه کردن یک متد
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);
?>
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام