👈🏻 ممکنه بخواهید برای یکی از کلاسهای لاراول متدی اضافه کنید و خب طبیعتا رفتن و اضافه کردنشش به سورس کد خود لاراول کار منطقی ای نیست اما در این موقعیت میتونید از macro ها استفاده کنید:
• در واقع کلاس های لاراول یه متد macro دارن که دوتا آرگیومنت میگیره؛ اولی اسم متدی که میخواهیم اضافه کنیم و دومی یه تابع که بدنه متد رو تشکیل میده
• حالا چطور ماکرو هارو تعریف کنیم و ازشون استفاده کنیم؟ برای اینکار میتونید ماکرو رو توی بوت AppServiceProvider تعریف کنید یا برای اینکه پروژتون تمیزتر باشه یه پروایدر مخصوص برای ماکروها بسازید ✔️
• برای مثال ما میخواهیم یه متد even برای کلاس Collection بسازیم تا اعضای زوج کالکشن رو برگردونه. برای اینکار توی متود boot میآییم و ماکرو رو به این صورت تعریف میکنیم:
use Illuminate\Support\Collection;
public function boot()
{
Collection::macro('even', function () {
return $this->filter(function ($value) {
return $value % 2 === 0;
});
});
}
• حالا هرجا بخواهیم میتونیم کلاس Collection رو use کنیم و از متد even استفاده کنیم:
php:
$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
$evenNumbers = $numbers->even();
// $evenNumbers will now contain [2, 4, 6, 8, 10]
#Laravel #php #آموزش #درسمن_پوینت
🆔️ @darsmancom
🌐 www.darsman.com