TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 609 subscribers
Post #47 286
#magic_method #oop #php
دو مجیک متد مهم دیگر در php متد های __call() و __callStatic() هستند.
این متدها به شما اجازه می‌دهند تا به طور پویا و در زمان اجرا، تماس با متدهای نامعتبر یا غیرموجود یک کلاس را کنترل کنید.

متد __call() : این متد برای تماس با متدهای نامعتبر یا غیرموجود در یک شئ به کار می‌رود. وقتی یک متد نامعتبر فراخوانی می‌شود، متد __call() فراخوانی می‌شود و شما می‌توانید عملیات مربوط به این فراخوانی را در آن تعریف کنید.
متد __call() دو پارامتر دریافت می‌کند: نام متد فراخوانی شده و آرگومان‌های متد. شما می‌توانید با استفاده از این دو پارامتر عملیات دلخواه خود را انجام دهید.
مثال :
class ّFruit {
public function __call($name, $arguments) {
echo "Calling method '$name' with arguments: " . implode(', ', $arguments);
}
}

$obj = new Fruit();
$obj->banana('yellow', 'sweet');

Result:
Calling method 'banana' with arguments: yellow, sweet

در مثال بالا از کلاس Fruit متدی به نام banana صدا زده شده که وجود ندارد، در نتیجه مجیک متد __call صدا زده می شود و عملیاتی را انجام می دهد.
در این مثال تنها نام متد و آرگومان های آن چاپ شده ولی در استفاده های جدی تر میتوان بسته به نام صدا زده شده متدی دیگر را فراخوانی کرد.
مثال:

class ّFruit {
public function __call($name, $arguments) {
if ($name === 'banana'){
banana($arguments);
}elsif ($name === 'apple'){
apple($arguments);
}
}
}
$obj = new Fruit();

$obj->banana('yellow', 'sweet');
Result:
Calling method 'banana' with arguments: yellow, sweet

$obj->apple('red', 'sweet');
Result:
Calling method 'apple' with arguments: red, sweet

در مثال بالا بسته به نام متد صدا زده که تعریف نشده است تابعی صدا زده می شود، به عنوان مثال اگر متد banana را صدا بزنیم تابعی به نام banana فراخوانی می شود، و استفاده های کاربردی تر....

متد __callStatic() : این متد مشابه __call() عمل می‌کند، با این تفاوت که برای تماس با متدهای استاتیک نامعتبر یا غیرموجود در یک کلاس استفاده می‌شود. وقتی یک متد استاتیک نامعتبر فراخوانی می‌شود، متد __callStatic() فراخوانی می‌شود و شما می‌توانید عملیات مربوط به این فراخوانی را در آن تعریف کنید.
متد __callStatic() دو پارامتر دریافت می‌کند: نام متد فراخوانی شده و آرگومان‌های متد. شما می‌توانید با استفاده از این دو پارامتر عملیات دلخواه خود را انجام دهید.
مثال:
class Fruit {
public static function __callStatic($name, $arguments) {
echo "Calling static method '$name' with arguments: " . implode(', ', $arguments);
}
}

Fruit::banana('yellow', 'sweet');

Result:
Calling static method 'banana' with arguments: yellow, sweet

بقیه موارد مانند متد __call می باشند.
.
  • ❤ 3
More from @amirhdeveloper
  1. Oct 8, 2026‍ اولین نسخه‌ی «قیچی» منتشر شد! ✂️ راست‌ش چند وقتی هست که پیامک‌های تبلیغاتی و اسپم، شدیدا…
  2. Oct 7, 2026بیاید از قدرت های لاراگرام بگم لاراگرام یک full-stack و ai-ready فریمورک برای توسعه ربات ه…
  3. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  4. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  5. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  6. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →