اگر با سری پست های اصلاح کد های پی اچ پی آشنایی ندارید و یا سایر قسمت ها را نخوانده اید از اینجا شروع کنید: در این پست با هم راه های مختلف نوشتن توابع variadic رو در پی اچ پی می بینیم تا بتونیم ضمن نوشتن این گونه توابع از داشتن توابع با تعداد زیاد ورودی هم راحت شویم تا کد تمیز تری داشته باشیم. اما variadic دقیقا چه تابعی هست؟ احتمالا شما هم در برنامه های خود با نوشتن توابعی مواجه شده اید که تعداد ورودی آنها زیاد هست (بیش از ورودی) و همان طور که میدونید همیشه به عنوان یکی از best practice های برنامه نویسی این مورد مطرح می شود که توابع نباید تعداد زیادی ورودی بگیرند، خوب راه حل های زیادی برای حل این مشکل وجود دارد: . استفاده از آرایه به عنوان ورودی یک راه حل ساده می تونه این باشه که ورودی تابع را یک آرایه بگیریم و هنگام صدا زدن تابع تمام ورودی های مورد نیاز رو یک آرایه کنیم و به تابع بفرستیم این مورد بسیار مرسوم هست و بزرگترین مشکل این روش عدم آگاهی از مقادیر مورد نیاز تابع هست و کسی که می خواهد تابع شما رو صدا بزند حتما باید بیاد و کد شما رو ببینه و بفهمه که آرایه رو چه شکلی باید بسازه که تابع به خوبی کار کنه که خوب خیلی از مواقع راه حل خوبی نیست. . استفاده از توابع داخلی پی اچ پی راه حل دوم استفاده از توابع داخلی پی اچ پی هست که می تونند ورودی های تابع رو بدون مشخص کردن آنها جمع آوری کنند و در قالب آرایه یا هر مقداری به ما بدهند. اینجا تا از توابع پرکاربرد برای این کار رو می بینید: در تکه کد زیر نحوه استفاده از تابع ( func _ get _ args رو می بینید که میتونه هر تعداد ورودی که به تابع پاس داده میشه رو در قالب یک آرایه به مابدهد و هم داکیومنت اون رو تو سایت پی اچ پی می تونید بخونید: دو تابع دیگر یعنی و می تونند همزمان با هم استفاده شوند و مکمل یکدیر باشند به این صورت که func _ num _ args تعداد ورودی های پاس داده شده به تابع رو مشخص کند و بر اساس اون می تونیم هرکدوم از ورودی ها رو با پاس دادن ایندکس به func _ get _ arg مثل کد زیر دریافت کنیم: . استفاده از ویژگی splat operator یک روش دیگر استفاده از ویژگی splat operator هست که در پی اچ پی . معرفی شد. از می تونید داکیومنت اون رو مشاهده کنید و به صورت زیر هم می تونیم از اون استفاده کنیم: در اینجا numbers $ . تمامی ورودی های پاس داده شده به تابع رو جمع میکنه و در قالب یک آرایه با نام numbers $ می تونیم از اونها استفاده کنیم. همان طور که دیدید استفاده از splat operator بسیار راحت هست و پی اچ پی مانند سایر زبان ها این ویژگی رو به صورت اختصاصی برای نوشتن و یا صدا زدن توابع variadic به وجود آورده است. پس با استفاده از این روش تونستیم تابع خودمون رو بنویسیم و تعداد زیادی ورودی هم نداشته باشیم، اما در بین این راه حل ها هم قطعا اگر از پی اچ پی ورژن . و یا بالاتر استفاده می کنید بسته به شرایط کدتون می تونید از روش اول و یا سوم استفاده کنید و روش دوم با توجه به قدرت و راحتی splat operator به نظر دیگه کاربردی نخواهد داشت. لطفا نظرتون رو توی کامنت ها بنویسید تا این سری پست های اصلاح کد های پی اچ پی رو با هم دیگه کامل تر کنیم. راستی لایک هم لطفااااااا یادتون نره: