سبد (0)

تبلیغات

متغیر ها و توابع 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

دیدگاه‌ها  

+8 # امیر خوش نیت 1393-08-03 13:15
در مثال const عبارت self به جای this$ چون ثابت هست به کار میره ، درسته؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+13 # امیر پهلوان صادق 1393-08-03 15:51
کلمه کلیدی self به کلاس مرجع یعنی My_Class اشاره می کند.
پس تفاوت this و self در مورد زیر است:
this به شیء جاری و self به کلاس جاری اشاره دارد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+7 # امیر خوش نیت 1393-08-03 16:50
متشکرم از پاسخ خوبتون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیر خوش نیت 1393-08-03 13:08
در مثال اول مربوط به static آیا با علامت فلش "
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیر پهلوان صادق 1393-08-03 15:52
متوجه سوالتون نشدم.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیر خوش نیت 1393-08-04 11:01
فکر کنم چون در برنامه شما اگه ما تگی بزنیم ادامه رشته حذف میشه ، سوالم از همون علامت به بعد دیگه حذف شده ، علامت بزرگتر و یک خط فاصله برای نشان دادن فلش زده بودم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+5 # امیر خوش نیت 1393-08-03 17:00
سوالم ناقص اومده ،
ازتون پرسیدم که در مثال اول مربوط به static آیا در خط آخر نباید متغییر name چاپ شود؟
Beyamooz.com is for tutorial
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+4 # امیر پهلوان صادق 1393-08-04 07:55
توجه: به متغییرهای Static یک کلاس، نمی توان از طریق شیء و عملگر فلش دسترسی داشت (با خطای Undefined "Property" name مواجه خواهید شد.) اما در صورت نیاز به ساخت شیء و دسترسی به متغییر استاتیک بصورت روبرو عمل کنید: echo $obj::$name
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی