PHP 8.6 با PFA و پولینگ تازه میاد
خلاصهٔ کاملتر
تو این مقاله اومده که PHP 8.6 روز ۱۹ نوامبر ۲۰۲۶ منتشر میشه و مهمترین قابلیتش partial function application یا همون PFA هست؛ یعنی یه تابع رو صدا میزنی ولی جای بعضی آرگومانهاش ? میذاری و یه closure میگیری که بقیهٔ آرگومانها رو بعداً میگیره. نویسنده میگه PFA بیشترین کاربردشو وقتی داره که با pipe operator نسخهٔ ۸.۵ ترکیب شه، چون pipe فقط یه callable با دقیقاً یک پارامتر قبول میکنه.
$output = 'Hello World'
|> str_replace(' ', '-', ?)
|> strtolower(...);
// hello-worldدومین چیز مهم API جدید پولینگه، یعنی راهی که بهت میگه کدوم stream آمادهٔ خوندن یا نوشتنه. تا الان فقط stream_select() رو داشتیم؛ حالا با کلاسهایی مثل Context و StreamPollHandle همون کارو میکنی و پشت صحنه از epoll یا WSAPoll استفاده میشه، پس توی مقیاس بالا سریعتره. نویسنده تأکید میکنه این API هیچ قابلیت async تازهای به PHP اضافه نمیکنه و event loop هم نداره؛ ساختن لایهٔ بالاتر همچنان کار کتابخونههایی مثل ReactPHP و Amp ـه.
از قابلیتهای کوچیکتر: تابع clamp() که یه مقدار رو داخل یه بازه نگه میداره و فقط با عدد کار نمیکنه (روی رشته و DateTimeImmutable هم جواب میده)، کلاس Duration برای نمایش بازهٔ زمانی با عملیات ریاضی و مقایسهٔ مستقیم، اجازهٔ مقدار پیشفرض برای پراپرتیهای readonly، دو متد isReadable() و isWriteable() روی ReflectionProperty، امکان گذاشتن doc comment روی خود پارامتر تابع، enum تازهٔ SortDirection و متد __debugInfo() برای enumها.
یه تغییر که ممکنه پروژههات رو بشکنه سمت سشنهاست: session.use_strict_mode و session.cookie_httponly از این به بعد پیشفرض 1 هستن و session.cookie_samesite روی Lax تنظیم میشه. یعنی اگه جایی session id رو از بیرون پاس میدادی، یا با JavaScript از document.cookie میخوندیش، دیگه کار نمیکنه. برای فلوهایی مثل SAML SSO که با POST بین دامنهها میرن باید خودت SameSite=None; Secure رو صریح بذاری.
نویسنده لیست منسوخشدهها رو هم آورده: return زدن داخل finally، استفاده از let و is به عنوان اسم کلاس یا تابع، اسم تابع readonly، ثابت _، پاس دادن object جای array به توابعی مثل array_walk()، و خانوادهٔ is_double() و is_integer() و is_long() و doubleval() که باید با is_float() و is_int() و floatval() عوض شن.
نکات کلیدی:
- تاریخ انتشار PHP 8.6: ۱۹ نوامبر ۲۰۲۶
- با PFA جای آرگومان خالی ? میذاری و یه closure میگیری، و با pipe operator ترکیب میشه
- clamp(101, min: 0, max: 100) مقدار 100 برمیگردونه و روی رشته و DateTime هم کار میکنه
- دیفالتهای سشن عوض شد: use_strict_mode و cookie_httponly میشن 1 و cookie_samesite میشه Lax
- is_double()، is_integer()، is_long() و doubleval() منسوخ شدن




