آموزش شی گرایی در PHP – کلاس و اشیاء
سلام
با دومین قسمت از آموزش OOP یا شی گرایی در PHP در خدمتتون هستیم؛ در این جلسه میخواهیم بپردازیم به مفهوم کامل تری از Class و Object ها و چند مثال بزنیم، در ادامه همراه بپرسم باشید.
درباره OOP
بیایید فرض کنیم، کلاسی به اسم میوه(Fruit) داریم که یک میوه میتواند خصوصیاتی مانند نام، رنگ، وزن و … داشته باشید. ما میتوانیم برای این کلاس متغیرهایی مانند color,name و weight را برای نگهداری مقادیر این خصوصیات تعریف کنیم.
تعریف یک کلاس(Class)
برای تعریف کلاس از کلمه کلیدی class استفاده میکنیم که به دنبال آن نام کلاس و یک جفت کروشه {} قرار میگیرد، در قطعه کد زیر یک کلاس تعریف کردیم:
۱ ۲ ۳ ۴ ۵ |
<?php class Fruit { // code goes here... } ?> |
در ادامه ما یک کلاس به اسم Fruit ساختیم که در این کلاس دو ویژگی name$ و color$ را ایجاد کردیم که برای اینکه به مقدار این دو ویژگی دسترسی داشته باشیم از دو متد set_name و get_name استفاده کردیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ |
<?php class Fruit { // Properties public $name; public $color; // Methods function set_name($name) { $this->name = $name; } function get_name() { return $this->name; } } ?> |
نکته: در کلاس ها، متغیرها را ویژگی و توابع را متد(Method) می نامیم.
تعریف یک شیء(Objcet)
کلاس ها بدون اشیاء هیچ چیز نیستند! ما میتوانیم از یک کلاس چندین شیء(object) ایجاد کنیم. هر شیء دارای کلیه خصوصیات و متدهای تعریف شده در کلاس است. اما دارای مقادیر مختلفی از ویژگی خواهند بود.
برای ایجاد یک شیء از کلاس از کلمه ی کلیدی 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(); ?> |
خروجی قطعه کد بالا، چاپ دو کلمه Banana و Apple می باشد.
در مثال زیر، دو Method دیگر برای تنظیم و بدست آوردن ویژگی color$ به کلاس Fruit اضافه میکنیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ |
<?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(); ?> |
خروجی قطعه کد بالا:
کلمه کلیدی 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"); ?> |
۲- خارج از کلاس (با تغییر مستقیم مقدار خاصیت):
۱ ۲ ۳ ۴ ۵ ۶ ۷ |
<?php class Fruit { public $name; } $apple = new Fruit(); $apple->name = "Apple"; ?> |
instanceof در کلاس
برای بررسی اینکه شیء به کلاس خاصی تعلق دارد یا خیر میتوانید از کلمه کلیدی instanceof استفاده کنید که خروجی به صورت true یا false برگردانده میشود:
۱ ۲ ۳ ۴ |
<?php $apple = new Fruit(); var_dump($apple instanceof Fruit); ?> |
خروجی قطعه کد بالا:
این قسمت از آموزش به پایان رسید، مشکلی در رابطه با آموزش بالا داشتید می توانید در سایت بپرسید.
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید