در دنیای برنامهنویسی PHP، متدهای استاتیک یکی از ویژگیهای مهمی هستند که به شما این امکان را میدهند تا بدون نیاز به ایجاد یک نمونه (instance) از کلاس، به متدها (و گاهی اوقات به متغیرها) دسترسی پیدا کنید.
استفاده از متدهای استاتیک هنگامی مفید میشود که عملکردی دارید که بیشتر جنبهی کلی و عمومی دارد و نیازی به وضعیت یک شی خاص ندارد. به عنوان مثال، متدهایی که وظایف کمکی انجام میدهند میتوانند به صورت استاتیک تعریف شوند.
برای تعریف یک متد به صورت استاتیک در PHP، کافی است از کلمه کلیدی static
استفاده کنید. این ویژگی باعث میشود که بتوانید بدون ایجاد شی، از این متد استفاده کنید و همچنین امکان استفاده در پروژههایی با عملکرد بالا و تعداد زیادی از درخواستها را فراهم میکند.
یکی دیگر از مزایای استفاده از متدهای استاتیک این است که کد شما نظم بیشتری پیدا میکند و شما میتوانید کتابخانههایی داشته باشید که تماماً از متدهای استاتیک برای انجام وظایف مشابه استفاده میکنند. این سبک کدنویسی به خصوص در چهارچوبها و پکیجها بسیار متداول است.
همچنین، در نظر داشته باشید که در کلاسهایی که نیاز به وراثت و متدهای استاتیک دارید، استفاده از کلمه کلیدی self
برای فراخوانی این متدها موجب میشود که همواره متد کلاس پایه فراخوانی شود. در صورتی که قصد دارید در کلاسهای فرزند نیز این متدها قابل اورراید شدن باشند، از static::
استفاده کنید.
در ادامه به مثالهایی از نحوه تعریف و استفاده از متدهای استاتیک در PHP خواهیم پرداخت.
<?php
class MathHelper {
public static function add($a, $b) {
return $a + $b;
}
public static function multiply($a, $b) {
return $a * $b;
}
}
// استفاده از متدهای استاتیک
echo MathHelper::add(5, 10); // خروجی: 15
echo MathHelper::multiply(3, 4); // خروجی: 12
?>
توضیحات خط به خط
<?php
این کد شروع یک فایل PHP را نشان میدهد.
class MathHelper {
تعریف یک کلاس به نام MathHelper
.
public static function add($a, $b) {
تعریف یک متد استاتیک که دو مقدار را جمع میزند.
return $a + $b;
برگشت نتیجه جمع کردن $a
و $b
.
public static function multiply($a, $b) {
تعریف یک متد استاتیک دیگر که دو مقدار را در هم ضرب میکند.
return $a * $b;
برگشت نتیجه ضرب کردن $a
و $b
.
}
پایان یافتن تعریف هر یک از متدها.
echo MathHelper::add(5, 10);
فراخوانی متد استاتیک add
و چاپ نتیجه آن.
echo MathHelper::multiply(3, 4);
فراخوانی متد استاتیک multiply
و چاپ نتیجه آن.