💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ حامد زالوند
سوال در مورد static
جامعه پی اچ پی ایجاد شده در ۲۳ مرداد ۱۴۰۳

سلام وقت بخیر شرمنده این استاتیک میشه توضیح بدین و  میخوام بدونم بیشترین کاربردش کجاست و  کجا استفاده میشه ممنون میشم 

 

یه سوال دیگه : استاتیک همون حکم  کلاس هست .    خب همون کلاس ما استفاده کنیم چی میشه یا نه تو بعضی مواقع  ایرادی داره 

میخوام یکم static دقیق‌تر درک کنم 

سلام

1. مفهوم static

در برنامه‌نویسی شی‌گرا (OOP) در PHP، کلمه‌ی کلیدی static برای تعریف متغیرها و متدهای استاتیک در یک کلاس استفاده میشه.

- متغیرهای استاتیک: متغیرهایی که با استفاده از static تعریف میشن، متعلق به کلاس هستن نه به اشیای ساخته شده از اون کلاس. این به این معناست که مقدار این متغیرها در میان تمام نمونه‌های کلاس (objects) مشترک هست.

- متدهای استاتیک: متدهایی که با استفاده از static تعریف میشن، می‌تونن بدون نیاز به ایجاد یک نمونه از کلاس، مستقیماً از طریق کلاس فراخوانی بشن. در این حالت، نمی‌تونید از $this برای اشاره به اشیا استفاده کنید، چرا که متدهای استاتیک به یک شیء خاص وابسته نیستن.

2. مثال ساده
class Calculator {
  public static $pi = 3.14;
  public static function add($a, $b) {
      return $a + $b;
  }
}
// فراخوانی متغیر استاتیک بدون نیاز به ایجاد شیء
echo Calculator::$pi; //  3.14
// فراخوانی متد استاتیک بدون نیاز به ایجاد شیء
echo Calculator::add(10, 20); //  30


3. کاربردهای static

بیشترین کاربرد static در موارد زیر هست:

- تعریف مقادیر و متدهای ثابت و عمومی: وقتی متغیری یا متدی قرار هست برای تمام اشیاء یکسان باشه و نیازی به ایجاد شیء برای دسترسی به اون ندارید، از static استفاده می‌کنید. مثلاً ثابت‌های ریاضی، تنظیمات، یا توابعی که به داده‌های کلاس وابسته نیستن.

- مدیریت منابع مشترک: در صورتی که بخواید متغیر یا متدی داشته باشید که منابعی مشترک میان تمام اشیا را مدیریت کنه (مثل شمارنده‌ی تعداد اشیاء ساخته شده از کلاس)، از static استفاده می‌کنید.

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

4. تفاوت کلاس و متد استاتیک

متدهای استاتیک به یک کلاس مرتبط هستن و فقط به اعضای استاتیک آن کلاس دسترسی دارن. در حالی که در متدهای معمولی، می‌تونید از $this برای دسترسی به ویژگی‌ها و متدهای شیء خاص استفاده کنید.

اگر از کلاس استفاده کنید، به هر بار ایجاد شیء نیاز دارید. اما با استفاده از static، نیازی به ساخت شیء ندارید و می‌توانید مستقیماً به متدها یا متغیرهای استاتیک دسترسی پیدا کنید. در برخی موارد، استفاده از شیء اضافه برای دسترسی به ویژگی‌هایی که می‌توانند استاتیک باشن، می‌تونه منجر به استفاده اضافی از حافظه و منابع بشه.

5. چه زمانی از static استفاده کنیم؟

- زمانی که متد یا متغیری به یک شیء خاص وابسته نیست و استفاده از آن برای تمام اشیاء یکسان هست.
- وقتی که قصد دارید بدون نیاز به ایجاد شیء، به متدها یا متغیرهایی دسترسی داشته باشید.

6. نکته‌های مهم:

- متدهای استاتیک نمی‌تونن از متغیرهای غیر استاتیک استفاده کنن، چون به یک نمونه از کلاس نیاز دارن.
- بیش از حد استفاده کردن از static ممکن هست باعث بشه که برنامه شما به صورت غیر منطقی و پیچیده عمل کنه.

احمدرضا فاطمی کیا ۲۳ مرداد ۱۴۰۳، ۰۷:۳۹