PHP OOP - مشخص کننده دسترسی‌ها

از ویکی‌کد
پرش به ناوبری پرش به جستجو


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


PHP - Access Modifiers

ویژگی‌ها و متد‌ها می‌توانند مشخص کننده دسترسی‌هایی (به انگلیسی: access modifier) داشته باشند که مشخص می کنند آنها از چه مکانی قابل دسترسی هستند. [۱]

سه مشخص کننده دسترسی وجود دارد:

  • public - ویژگی یا متد می‌تواند از هر جایی مورد دسترسی قرار بگیرد. این مشخص کننده دسترسی (به انگلیسی: access modifier) اختیاری است
  • protected - ویژگی یا متد می‌تواند در درون همان کلاس یا کلاسهای مشتق شده از کلاس مورد دسترسی قرار گیرند
  • private - ویژگی یا متد تنها درون همان کلاس می‌تواند مورد دسترسی قرار بگیرد

در مثال زیر ما سه مشخص کننده دسترسی متفاوت به سه ویژگی اضافه کرده‌ایم. اینجا، اگر شما سعی کنید که ویژگی name را تنظیم کنید این امر به خوبی ممکن خواهد بود (زیرا ویژگی name از مشخص کننده دسترسی public استفاده می‌کند). اما، اگر شما سعی کنید ویژگی color یا weight را تنظیم کنید با خطای fatal error مواجه می‌شوید (زیرا ویژگی color و weight از مشخص کننده دسترسی protected و private استفاده می‌کنند):

مثال

 1 <?php
 2 class Fruit {
 3   public $name;
 4   protected $color;
 5   private $weight;
 6 }
 7 
 8 $mango = new Fruit();
 9 $mango->name = 'Mango'; // OK
10 $mango->color = 'Yellow'; // ERROR
11 $mango->weight = '300'; // ERROR
12 ?>


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


در مثال بعد ما مشخص کننده دسترسی‌ها را به دو متد اضافه کرده‌ایم. در اینجا، اگر شما سعی کنید متد set_color() یا set_weight() رافراخوانی کنید این امر موجب بروز خطای Fatal error می‌شود (زیرا که دو تابع به ترتیب دارای مشخص کننده دسترسی protected وprivate هستند)، حتی در صورتی که تمامی ویژگی‌ها دارای مشخص کننده دسترسی public باشند:

مثال

 1 <?php
 2 class Fruit {
 3   public $name;
 4   public $color;
 5   public $weight;
 6 
 7   function set_name($n) {  // a public function (default)
 8     $this->name = $n;
 9   }
10   protected function set_color($n) { // a protected function
11     $this->color = $n;
12   }
13   private function set_weight($n) { // a private function
14     $this->weight = $n;
15   }
16 }
17 
18 $mango = new Fruit();
19 $mango->set_name('Mango'); // OK
20 $mango->set_color('Yellow'); // ERROR
21 $mango->set_weight('300'); // ERROR
22 ?>


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


منابع آموزشی