توضیحات پیشنهادی نظرات اشتراک
تبلیغات

پارامترهای مرجع در توابع PHP

پارامترهای مرجع در توابع PHP

در زمان ارسال یک متغیر به یک تابع از طریق پارامترهای ورودی، اگر مقدار متعیر ارسالی در داخل تابع تغییر کند، این تغییر به صورت محلی بوده و روی متغیری که بیرون تابع قرار دارد هیچ تاثیری نخواهد داشت! اما اگر تغییرات روی متغیر اصلی نیز اعمال شوند بایستی چه کاری انجام دهیم؟!

در واقع در روش عادی، زمان ارسال متغیر به داخل یک تابع، در همان لحظه یک کپی از متغیر به صورت محلی در داخل تابع ایجاد می‌شود! و اگر بخواهیم متغیر ورودی همان متغیر بیرونی باشد که ارسال شده است، باید این متغیر ورودی را از نوع مرجع تعریف کنیم.

کاربرد پارامتر مرجع:

  • داشتن بیش از یک خروجی از یک تابع (البته برای این‌کار از آرایه هم می‌توان استفاده کرد)
    مثل تابع str_replace
  • زمانی که متغیر ارسالی سنگین باشد و نخواهیم چندین کپی از آن ایجاد شود. مثلا در مورد موارد مربووط به پردازش تصویر و همه میدانیم که تصویر سنگین است.
  • زمانی که می‌خواهیم قبل از استفاده از متغیر، تغییراتی روی آن اعمال کنیم.
  • و…

راهنما

سینتکس متغیر مرجع: در PHP برای اینکه پارامتری از یک تابع را به صورت مرجع تعریف کنیم، کافیست تا یک علامت & به قبل از $ مربوط به آن پارامتر اضافه کنیم! سپس در زمان استفاده از این پارامتر در داخل متغیر، نیازی به گذاشتن & قبل از آن نیست و به صورت عادی می‌توان استفاده کرد.

نکته
نیازی به چسباندن علامت & به $ نبوده و می‌توانید بین آنها فاصله قرار دهید.

مثال

مثال 1: کد زیر را در نظر بگیرید.

همانطور که می‌بینید، متغیر y که در بیرون تابع test و با مقدار 0 تعریف شده است را به داخل تابع test ارسال کرده‌ایم؛ سپس داخل تابع test، مقدار 1 را به این متغیر اضافه می‌کنیم. حالا اگر در بیرون تابع، متغیر y را چاپ کنیم، همان مقدار 0 را نمایش خواهد داد!

حالا کافیست متغیر ورودی تابع test را از نوع یک متغیر مرجع تعریف کنیم:

تنها با اضافه کردن یک علامت & به قبل از تعریف پارامتر، توانستیم آن را به یک متغیر مرجع تبدیل کنیم و با این تکنیک، دیگر این متغیر به همان متغیری که از بیرون ارسال شده است اشاره می‌کند. و همانطور که می‌بینید، مقدار y این‌بار برابر 1 شده است!


مثال 2: در اینجا به کاربرد سوم  پارامتر مرجع که در توضیحات ابتدای مطلب ذکر شد می‌پردازیم و فیلتری را برروی متغیر ورودی اعمال می‌کنیم.

البته می‌توان از return هم استفاده کرد؛ اما در مواقعی بهتر است از این روش استفاده کنیم. مخصوصا زمانی که پارامترها زیاد باشد و بخواهیم تک تک آنها را تغییر دهیم.

کانال تلگرام فول کده

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای
برنامه‌نویس فول استک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه