معرفی توابع Variadic در php

هنگام استفاده از توابع در PHP اگه تعداد آرگومان هایی که به توابع ارسال میشه بیشتر از تعداد پارامترهایی باشه که درون تابع ذکر شده چی میشه؟ ما میتونیم آرگومان هایی که ارسال شده اند رو با تابع func_get_args دریافت کنیم و درون تابع ازشون استفاده کنیم , به مثال زیر دقت کنید:

در مثال بالا تابع ما یک پارامتر با نام x$ قبول میکنه ولی ما دو مقدار رو به تابع ارسال کردیم , مقدار اول رو میشه با خود x$ دریافت کرد اما مقدار دوم را با میشه با تابع func_get_args دریافت کنیم , دقت کنید که همه ی مقادیر ارسال شده به تابع با دستور func_get_args قابل دریافت است.

در php 5.6 به بعد میتونیم از دستوری به نام variadic در توابع خودمون استفاده کنیم. ما در توابع خود اخرین پارامتر رو به همراه … (سه تا نقطه) درج میکنیم تا اگر تعداد بیشتری از مقدادیر به تابع ارسال شوند درون این پارامتر قرار گیرند و دیگر نیازی به استفاده از func_get_args نباشیم. به مثال زیر دقت کنید:

در مثال بالا تابع ما یک پارامتر با نام x$ را دریافت میکند اما ما تعداد بیشتری پارامتر بهش ارسال میکنیم و اونها رو با متغیر params$ دریافت میکنیم (به این پارامتر که همراه با … درج می شود variadic می گویند.) اگه با خطا مواجه شدید ورژن php خودتون رو چک کنید. دقت کنید باید ورژن اون بالاتر از ۵٫۶ باشه تا بتونید از variadic استفاده کنید.

دستورات variadic اگه به موقع استفاده بشه میتونه خیلی کاربردی باشه و به کمک ما بیاد. به مثال زیر دقت کنید:

در دستورات بالا فرض کنید که ما یک کلاس به نام mysql داریم و قراره که با استفاده از دستور prepare ابتدا یک کوئری رو آماده سازی و سپس با استفاده از مقادیری که به تابع ارسال میشن اجرا کنیم. تعداد این مقادیری که به تابع ارسال میشن غیر قابل پیش بینی خواهند بود و ممکنه متغیر باشند , در اینجاست که variadic به کمک ما میاد تا این پارامتر ها رو برای execute کردن کوئری prepare شده , دریافت و  استفاده کنیم.

امیدوارم که این آموزش در پروژه های آینده شما بدردتون بخوره و توابع شما رو خیلی بهبود ببخشه 😀 اگه سوالی دارید یا قسمتی از آموزش رو متوجه نشدید از بخش نظرات سوالات خودتون رو بپرسید تا پاسخ بدم. موفق باشید.

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK

می‌خواهید دیدگاهتان را بیان کنید؟