يك كلاس(class) يك الگو براي اشياء است وشئ(object) نمونه اي از كلاس ميباشد
فرض كنيد كلاسي بنامfruit داشته باشيم .اين كلاس داراي مشخصات نام،رنگ و وزن باشد .براي اين مشخصات متغيرهاي$weight , $color , $name در نظر ميگيريم، كه مقادير آن مشخصات را در آنها نگه داريم.
هنگاميكه كه يك شئ واقعي مثلbanan,appl و غيره از آن ايجاد ميشوند، همه مشخصات ورفتارهاي آن كلاس را بارث ميبرند .اما هر شئ مقاديري براي مشخصات خود دارد.
يك كلاس با كي وردclass تعريف ميگردد .بدنبال آن نام كلاس ومشخصات ومتدهايش در داخل{ } ذكر ميگردد، مطابق فرم كلي زير:
<?php class Fruit { // code goes here... } ?>
در اسكريپت زير كلاسي بانامfruit وشامل دو ويژگي $color , $nameوهمچنين دو متد get_name() , set_name()براي مقدار دهي و دريافت مقدار . تعريف مطابق كد زير
<?php class Fruit { // Properties public $name; public $color; // Methods function set_name($name) { $this->name = $name; } function get_name() { return $this->name; } } ?>
نكته ـ در تعريف كلاس متغيرهاproperties وتوابع راmethod مي نامند.
كلاسها بدون اشيا چيزي نيستند، اما ميتوان چندين شئ از آن كلاس ايجاد نمود .هر شئ ايجادي تمام ويژگي ومتدهاي كلاسش را دريافت ميكند ولي ويژگي يا مشخصه آن مقدار متفاوتي ميتواند داشته باشد.
براي ايجاد شئ ازكلمه كليدي new استفاده ميشود .در مثال زير نمونه اي از اشياء كلاسfruit ايجاد شده است . اين اشياء$banana , $apple ميباشند.
مثال ـ ايجاد شئ
مثال ـ در مثال زير دو متد ديگر براي مقدار دهي$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(); ?>
كلمه كليدي $this اشاره به شي جاري دارد وفقط در داخل متد هاي آن شئ موجود است.
مثال ـ به مثال زير توجه كنيد، ايجاد شئ $apple با ويژگي$name
<?php class Fruit { public $name; } $apple = new Fruit(); ?>
بنا براين بدو روش ميتوان مقدار ويژگي آن شئ را تغيير داد .مطابق زير:
1ـ در داخل كلاس، بعنوان مثال براي ويژگي$name با اضافه نمودن متدset_name( ) واستفاده از$this در داخل متد مطابق مثال زير
مثال ـ تغيير ويژگي در داخل متد با $this
<?php class Fruit { public $name; function set_name($name) { $this->name = $name; } } $apple = new Fruit(); $apple->set_name("Apple"); echo $apple->name; ?>
2ـ تغيير ويژگي خارج از تعريف كلاس
مثال ـ تغيير مقدار$name خارج ازكلاس $fruit
<?php class Fruit { public $name; } $apple = new Fruit(); $apple->name = "Apple"; echo $apple->name; ?>
با كلمه كليديinstanceof ميتوان كنترل نمود كه شئي عضو كلاس خاصي هست ياخير.
مثال ـ بررسي عضويت شئي دركلاس
<?php $apple = new Fruit(); var_dump($apple instanceof 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(); var_dump($apple instanceof Fruit); ?>