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 استفاده می‌کنند):

مثال[ویرایش | ویرایش]

<?php
class Fruit {
  public $name;
  protected $color;
  private $weight;
}

$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>


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


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

مثال[ویرایش | ویرایش]

<?php
class Fruit {
  public $name;
  public $color;
  public $weight;

  function set_name($n) {  // a public function (default)
    $this->name = $n;
  }
  protected function set_color($n) { // a protected function
    $this->color = $n;
  }
  private function set_weight($n) { // a private function
    $this->weight = $n;
  }
}

$mango = new Fruit();
$mango->set_name('Mango'); // OK
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>


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



منابع آموزشی[ویرایش]