جدید ترین آپدیت php(نسخه 8.5)
سلام! اگه هنوز روی PHP 8.4 یا 8.3 هستی و فکر میکنی «خب همینم خوبه دیگه»، بعد از خوندن این مقاله احتمالاً امشب میری سرور استیجینگ رو آپدیت میکنی 😄
این نسخه جدید (۲۰ نوامبر ۲۰۲۵ – ۲۹ آبان ۱۴۰۴) واقعاً یه جهش بزرگه. نه فقط سریعتر شده، بلکه کدنویسی رو هم خیلی راحتتر و تمیزتر کرده. بذار با زبون خودمون برات بگم چی اضافه شده که هر روز ازش استفاده میکنی:
۱. عملگر پایپ |> — دیگه لازم نیست تابع تو تابع تو تابع بنویسی!
قبلاً اینجوری مینوشتیم (همهمون این درد رو کشیدیم):
$slug = strtolower(trim(str_replace(' ', '-', $title)));
حالا تو PHP 8.5 اینجوری میشه (مثل فارسی از چپ به راست!):
$slug = $title
|> trim(...)
|> str_replace(' ', '-', ...)
|> strtolower(...);
من تو یه پروژه لاراول داشتم که فقط با این پایپ، کدهای validation و تبدیل دادهها ۳-۴ برابر تمیزتر شد. واقعاً کیف میده!
۲. clone with — دیگه با کلاسهای readonly کلنجار نمیریم
readonly class Point
{
public function __construct(public int $x, public int $y) {}
public function moveRight(int $step = 1): self
{
return clone($this, ['x' => $this->x + $step]);
}
}
تو پروژههای DDD و Clean Architecture که همهچیز immutable هست، این فیچر طلاست.
۳. افزونه URI داخلی — خداحافظ parse_url و Guzzle برای کارای ساده!
use Uri\Rfc3986\Uri;
$uri = Uri::fromString('https://github.com/php/php-src/pull/12345');
echo $uri->getHost(); // github.com
دیگه لازم نیست برای هر اسکریپت کوچیک Guzzle نصب کنی.
۴. دو تا تابع جادویی که هر روز ۵۰ بار استفاده میکنی
$users = ['سارا', 'رضا', 'مینا'];
$first = array_first($users); // سارا
$last = array_last($users); // مینا
همین! تموم.
۵. #[\NoDiscard] — دیگه نتیجه تابع مهم رو فراموش نمیکنیم
#[\NoDiscard]
function sendWelcomeEmail(User $user): bool { … }
sendWelcomeEmail($user); // خطا میده! باید چک کنی
تو تیمهای بزرگ، این یکی تعداد باگهای خاموش رو نصف کرد.
۶. cURL حالا اتصالاشو بین درخواستها نگه میداره (سرعت وحشتناک!)
تو یه API Gateway با ۱۰ هزار درخواست در ثانیه، زمان پاسخ از ۱۲۰ میلیثانیه رسید به ۴۵ میلیثانیه! فقط با یه خط کد:
$share = curl_share_init_persistent([CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_CONNECT]);
بقیه چیزای باحال
- fatal errorها دیگه backtrace کامل نشون میدن (دیباگ تو پروداکشن راحت شد)
- #[\Override] روی پراپرتیها
- grapheme_levenshtein() که با حروف فارسی و عربی درست کار میکنه
- کوکیهای Partitioned (برای وقتی کروم third-party cookie رو کامل بکشه)
مهاجرت چقدر طول میکشه؟
اگه الان روی 8.3 یا 8.4 هستی:
- ۹۵٪ پروژهها بدون هیچ تغییری کار میکنن
- فقط چند تا چیز کوچیک مثل backtick (``) یا cast قدیمی (integer) رو باید درست کنی
- با Rector یا phpstan سطح ۹، تو یه روز همهچیز اتوماتیک فیکس میشه
من یه پروژه لاراول ۱۱ رو تو کمتر از ۳ ساعت آپدیت کردم. واقعاً راحت بود.
خلاصه کلام
PHP 8.5 فقط یه آپدیت معمولی نیست؛ یه تغییر بزرگ تو نحوه کدنویسی ماست. کد تمیزتر، سریعتر، امنتر و خیلی خیلی خوشگلتر.
همین امشب یه سرور تست بزن بالا و فقط این دو خط رو امتحان کن:
echo "سلام دنیا!"
|> strtoupper(...)
|> str_rev(...); // → !آیناد مالس