متغیر ها و توابع static در PHP

چاپ

متغیر ها و توابع Static

Wiki

به متغیر ها و توابع static برخلاف متغیر ها و توابع معمولی می توانند بدون ایجاد شئ از کلاس، دسترسی داشت.

نحوه دسترسی:

 نام متغیر یا تابعی که static تعریف شده   ::   نام کلاس

چهار محدوده نمایش وجود دارد:

  1. public : منبع مورد نظر در هر قسمتی قابل استفاده می باشد.
  2. protected : فقط در کلاسی که تعریف شده و کلاس هایی که آن را توسعه می دهند قابل استفاده می باشد.
  3. private : فقط در کلاسی که تعریف شده قابل استفاده می باشد.
  4. final : در هر جایی قابل استفاده می باشد، اما در کلاس های توسعه دهنده نمی تواند دوباره تعریف شود.(final به کلاس ها نیز میتواند تخصیص یابد، کلاس هایی که به صورت final تعریف شده اند، نمی توانند توسعه یابند.)

مثال: در مثال زیر متغیر name و تابع ()action به صورت static تعریف شده است:

<?php
class My_Class{
    static $name="Beyamooz.com is for tutorial\n";
    static function action()
    {
        echo "PHP is easy!!\n";
    }
}
My_Class::action();
echo My_Class::$name;
$obj=new My_Class();
$obj->action();
//echo $obj->name;  Undefined "Property" name
echo $obj::$name;
?>

خروجی کد بالا:

PHP is easy!!
Beyamooz.com is for tutorial
PHP is easy!!
Beyamooz.com is for tutorial

توجه: به متغیرهای Static یک کلاس، نمی توان از طریق شیء و عملگر فلش (<-) دسترسی داشت (با خطای Undefined "Property" name مواجه خواهید شد.)


ثوابت (const)

Wiki

ثابت ها یا همان const ها در کلاس ها همانند متغیر ها هستند با این تفاوت که مقدار آنها قابل تغییر نمی باشد و با این مزیت که در هرجایی میتوانند مورد استفاده قرار گیرند!

مثال:

<?php
class My_Class{
    const name="www.beyamooz.com<br />";
    function test()
    {
        echo self::name;
    }
}
echo My_Class::name;
$obj=new My_Class;
$obj->test();
؟>

 خروجی کد بالا:

www.beyamooz.com
www.beyamooz.com