توابع کوتاه در نسخه ۷.۴ زبان PHP

تیم PHP به تازگی پیشنهاد افزودن توابع کوتاه (Arrow functions) را که توسط درخواست نظر (RFC) نیکیتا پوپوف، لوی موریسون و باب وینند ارائه شده بود، را تایید کرد. نقل قول زیر مربوط به قسمت مقدمه این درخواست نظر میباشد.
" توابع ناشناس (Anonymous functions) در PHP میتوانند بسیار پیچیده شوند، حتی در حالتی که بسیار ساده هستند و تنها یک عمل ساده را انجام میدهند. علاوه بر این وارد کردن متغیر ها درون اسکوپ کلوژر باید به صورت دستی انجام شود. پس حتی با استفاده از کلوژرهای ساده، خوانایی و درککردن کدهای ما سخت تر میشود. این RFC یک روش مختصر برای این الگو پیشنهاد می کند. "
این RFC سینتکس زیر را برای توابع کوتاه پیشنهاد کرده است:
این RFC همچنین مثالی برای استفاده از این توابع ارائه داده است:
در زیر چگونگی استفاده از این توابع را مرور میکنیم:
- این توابع در نسخه ۷.۴ زبان PHP قابل استفاده هستند
- این توابع با کلیدواژه fn شروع میشوند
- این توابع تنها میتوانند یک عبارت داشته باشند که گزینه return میباشد
- استفاده از کلیدواژه return در بدنه این توابع مجاز نیست
- آرگومانها و مقادیر برگشتی میتوانند از Type Hinting استفاده کنند
- استفاده از عملگر گسترش (Spread Operator) نیز مجاز است
به طور خلاصه، کلوژرهای کوتاه همان عملکرد هایی که شما از کلوژرهای معمولی انتظار دارید را ارائه میدهند ; به استثنای این که تنها میتوانند یک عبارت داشته باشند.
دریافت مقادیر خارج از اسکوپ
یکی دیگر از تفاوتهای مهم بین کلوژرهای کوتاه و معمولی این است که در کلوژرهای کوتاه برای دسترسی به مقادیر خارج از اسکوپ، نیازی به استفاده از کلیدواژه use نیست.
توجه به این نکته نیز مهم است که شما مجاز به تغییر متغیر در دامنه (اسکوپ) بیرونی نیستید. در مثال بالا میبینید که متغیر modifier$ در داخل کلوژر کوتاه تغییر میکند، اما این کار هیچ تاثیری روی متغیر modifier$ که خارج از اسکوپ قرار دارد، نخواهد داشت.