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، که در کنار آن نام کلاس به همراه یک جفت آکولاد { } قرار می‌گیرد. تمامی ویژگی‌ها و متدهای کلاس درون آکولادها قرار می‌گیرند:

شیوه نوشتار

1 <?php
2 class Fruit {
3   // code goes here...
4 }
5 ?>

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

مثال

 1 <?php
 2 class Fruit {
 3   // Properties
 4   public $name;
 5   public $color;
 6 
 7   // Methods
 8   function set_name($name) {
 9     $this->name = $name;
10   }
11   function get_name() {
12     return $this->name;
13   }
14 }
15 ?>


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


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

تعریف اشیاء

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

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

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

مثال

 1 <?php
 2 class Fruit {
 3   // Properties
 4   public $name;
 5   public $color;
 6 
 7   // Methods
 8   function set_name($name) {
 9     $this->name = $name;
10   }
11   function get_name() {
12     return $this->name;
13   }
14 }
15 
16 $apple = new Fruit();
17 $banana = new Fruit();
18 $apple->set_name('Apple');
19 $banana->set_name('Banana');
20 
21 echo $apple->get_name();
22 echo "<br>";
23 echo $banana->get_name();
24 ?>


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


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

مثال

 1 <?php
 2 class Fruit {
 3   // Properties
 4   public $name;
 5   public $color;
 6 
 7   // Methods
 8   function set_name($name) {
 9     $this->name = $name;
10   }
11   function get_name() {
12     return $this->name;
13   }
14   function set_color($color) {
15     $this->color = $color;
16   }
17   function get_color() {
18     return $this->color;
19   }
20 }
21 
22 $apple = new Fruit();
23 $apple->set_name('Apple');
24 $apple->set_color('Red');
25 echo "Name: " . $apple->get_name();
26 echo "<br>";
27 echo "Color: " . $apple->get_color();
28 ?>


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


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

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

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

مثال

1 <?php
2 class Fruit {
3   public $name;
4 }
5 $apple = new Fruit();
6 ?>

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

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

مثال

 1 <?php
 2 class Fruit {
 3   public $name;
 4   function set_name($name) {
 5     $this->name = $name;
 6   }
 7 }
 8 $apple = new Fruit();
 9 $apple->set_name("Apple");
10 ?>


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


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

مثال

1 <?php
2 class Fruit {
3   public $name;
4 }
5 $apple = new Fruit();
6 $apple->name = "Apple";
7 ?>


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


PHP - instanceof

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

مثال

1 <?php
2 $apple = new Fruit();
3 var_dump($apple instanceof Fruit);
4 ?>


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



منابع آموزشی