‎‎متدهاي استاتيكPHP OOP-‎Static Methods -‎

Previous >    <Next  

‎‎متداستاتيكPHP-‎Static Method

‎متد يا تابع استاتيك در يك كلاس ميتواند بطور مستقيم بدون ايجاد شي،فراخوان شود .توابع مذكور ‎با كلمه كليدي‎static‎ در يك كلاس تعريف ميشوند .

‎‎فرم كلي تعريف تابع استاتيك

‎‎فرم كلي تعريف آن مطابق زير است.

<?php 
class ClassName {
  public static function staticMethod() {
    echo "Hello World!";
  }
}
?> 

‎براي دسترسي به تابع يا متد استاتيك يك كلاس، ابتدا نام كلاس، بعد دبل كالن‎"::‎"‎ ‎و سپس نام متد.

‎‎فرمت كلي بكارگيري مطابق زير است.

‎classname::staticmethod( );‎

‎‎مثال ـ به مثال زير توجه كنيد.

 <?php 
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }
}

// Call static method
greeting::welcome();
?>

--(go to editor for change code and run)

‎تشريح مثال ـ ‎در اين اسكريپت ابتدا، متد يا تابع‎static welcome( )‎ در كلاسgreeting تعريف شده ‎وسپس بصورت‎greeting::welcom()‎;‎ فراخوان گرديده است .اين اتفاق بدون ايجاد ‎نمونه ازكلاس ميباشد.

‎‎موارد بيشتر در باره متداستاتيك

‎يك كلاس ميتواند هم داراي متد استاتيك بوده وهم متد غير استاتيك .يك متد استاتيك ميتواند در ‎همان كلاس ودر متد ديگر با كلمه كليدي‎self::‎ وبدنبال نام متد فراخوان شود .

‎‎به مثال توجه كنيد‎مثال -.

<?php 
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }

  public function __construct() {
    self::welcome();
  }
}

new greeting();
?> 

--(go to editor for change code and run)

‎يك متد استاتيك ميتواند درساير كلاسها فراخوان گردد .براي انجام اين كار بايد متد بصورت ‎public‎‎در ‎كلاس تعريف شود.

‎‎مثال ـ فراخوان متد استاتيك در كلاسهاي ديگر

<?php 
class A {
  public static function welcome() {
    echo "Hello World!";
  }
}

class B {
  public function message() {
    A::welcome();
  }
}

$obj = new B();
echo $obj -> message();
?>  

--(go to editor for change code and run)

‎براي فراخواني متداستاتيك در يك كلاس اولاد،ازكلمه كليدي‎parent::‎ استفاده ميشود ‎‎براي اينكار بايد متد فوق با دسترسي‎protected‎ يا‎public‎ ‎تعريف شود.

‎‎مثال ـ در مثال زير نمونه استفاده متد استاتيك را در كلاس اولاد نشان ميدهد.

<?php 
class domain {
  protected static function getWebsiteName() {
    return "W3Schools.com";
  }
}

class domainW3 extends domain {
  public $websiteName;
  public function __construct() {
    $this->websiteName = parent::getWebsiteName();
  }
}

$domainW3 = new domainW3;
echo $domainW3 -> websiteName;
?> 

--(go to editor for change code and run)


Previous >    <Next