آخرین تغییرات PHP در نسخه جدید 8.4

آخرین تغییرات PHP در نسخه جدید 8.4

۱۴۰۴/۰۷/۰۵ برنامه نویسی بازدید : 117

آخرین تغییرات در نسخه جدید PHP — بررسی ویژگی‌ها، بهبودها و نکات مهاجرت

مقدمه

در دنیای توسعه وب، PHP یکی از زبان‌هایی است که همواره تحول می‌یابد. نسخه‌های جدید این زبان با ویژگی‌های تازه، بهینه‌سازی‌ها و حذف یا منسوخ‌کردن توابع قدیمی همراه هستند. این تغییرات نه تنها برای توسعه‌دهندگان حرفه‌ای بلکه برای تمام افرادی که با CMS‌ها، فریم‌ورک‌ها یا پروژه‌های شخصی سر و کار دارند، بسیار حیاتی‌اند. در این مقاله در پویا وب قصد داریم به آخرین تغییرات نسخه جدید PHP بپردازیم، نکات ریسک و توصیه‌ها را بررسی کنیم و نشان دهیم چگونه پروژه‌های فعلی را برای مهاجرت آماده کنیم.

تاریخچه کوتاه و وضعیت فعلی

نسخه فعلی PHP 8.4 است که در تاریخ ۲۱ نوامبر ۲۰۲۴ منتشر شده است. در این نسخه، علاوه بر افزودن ویژگی‌های جدید، چندین تابع یا رفتارهای قدیمی نیز منسوخ شده‌اند. همچنین چرخه پشتیبانی نسخه‌های PHP در مارس ۲۰۲۴ تغییر کرد: از این پس، هر نسخه دو سال پشتیبانی کامل (رفع باگ + امنیت) و دو سال فقط پشتیبانی امنیتی خواهد داشت. به این ترتیب، PHP 8.4 تا ۳۱ دسامبر ۲۰۲۸ پشتیبانی خواهد داشت.

بیشتر بخوانید : نقشه راه یادگیری برنامه‌نویسی

ویژگی‌های جدید مهم در PHP 8.4

۱. Property Hooks

یکی از جذاب‌ترین امکانات جدید در PHP 8.4، Property Hooks است. با Hooks می‌توان منطق خواندن (get) و نوشتن (set) یک property را مستقیماً در تعریف آن قرار داد، بدون نیاز به متدهای جداگانه getter/setter.

مثال Property Hooks :


// 
class User {
    private string $first;
    private string $last;

    public string $fullName {
        get => $this->first . ' ' . $this->last;
        set {
            [$this->first, $this->last] = explode(' ', $value, 2);
        }
    }
}
  
آخرین تغییرات PHP در نسخه جدید 8.4

با این امکان، دسترسی و اعتبارسنجی مقادیر propertyها به شکل خواناتر و متمرکزی انجام می‌شود.

۲. Asymmetric Visibility

ویژگی دید نامتقارن (Asymmetric Visibility) اجازه می‌دهد که خواندن و نوشتن یک property تحت مجوزهای متفاوت باشد. مثلا بتوانی آن را public برای خواندن و private برای نوشتن تعریف کنی. این گزینه کنترل بیشتری روی وضعیت داخلی آبجکت به توسعه‌دهنده می‌دهد.

۳. توابع جدید مرتبط با آرایه‌ها

PHP 8.4 چند تابع جدید برای کار با آرایه‌ها معرفی کرده است که کارها را مختصرتر و خواناتر می‌کند:

  • array_find()
  • array_find_key()
  • array_any()
  • array_all()

مثلاً اگر بخوای بررسی کنی آیا در آرایه‌ای شرطی برقرار است:


$found = array_find($items, fn($x) => $x > 10);
$any = array_any($items, fn($x) => $x % 2 === 0);
  

۴. پشتیبانی کامل از HTML5 و بهبود DOM

در نسخه جدید، پشتیبانی از HTML5 توسط parser داخلی تقویت شده است و کلاس‌های DOM جدیدی معرفی شده‌اند تا متمایز از کلاس‌های XML عمل کنند.

۵. تغییرات تابع round() و گرد کردن

تابع round() اکنون اگر از وضعیت نامعتبری استفاده شود، خطا (ValueError) پرتاب می‌کند و حالت‌های جدید گرد کردن اضافه شده‌اند.

۶. گزینه‌های جدید cURL و بهبود در گزینه‌های CURLOPT

نسخه 8.4 برخی گزینه‌های جدید برای cURL افزوده است، مانند CURLOPT_PREREQFUNCTION و CURLOPT_DEBUGFUNCTION، و گزینه‌هایی برای HTTP/3 نیز افزوده شده‌اند.

۷. تغییرات مربوط به دستورات new و حذف پرانتز

در نسخه 8.4 امکان نوشتن new MyClass->method() بدون پرانتز اضافی فراهم شده — یعنی اجرای متد بلافاصله پس از ساخت آبجکت.

تغییرات حذف‌شده یا منسوخ‌شده (Deprecations)

  • اعلان پارامترهای nullable به صورت ضمنی (Implicit nullable) دیگر منسوخ شده‌اند.
  • ثابت E_STRICT منسوخ شده است.
  • استفاده از session_set_save_handler() با بیش از دو آرگومان منسوخ شده است.
  • برخی توابع CSV که آرگومان escape ندارد یا توابع SUNFUNCS_RET_* منسوخ شده‌اند.
  • بعضی افزونه‌ها مانند Pspell و IMAP از هسته PHP به ماژول PECL منتقل شده‌اند.

اگر پروژه شما از این توابع یا رفتارها استفاده می‌کند، قبل از مهاجرت حتماً باید جایگزین مناسب پیدا کنید.

تأثیرات این تغییرات بر پروژه‌ها

  • سازگاری کتابخانه‌ها و فریم‌ورک‌ها: برخی کتابخانه‌ها یا فریم‌ورک‌ها هنوز ممکن است با ویژگی جدید یا توابع منسوخ شده سازگار نباشند. لازم است نسخه آن‌ها را بررسی کنید یا صبر کنید تا انتشار سازگار آن‌ها بیاید.
  • آزمون کامل و محیط staging: قبل از اینکه سایت زنده را به PHP 8.4 ارتقا دهید، بهتر است نسخه‌ی شبیه‌سازی‌شده (staging) راه‌اندازی کرده، تست‌ها را اجرا کنید و تمام بخش‌های سایت را بررسی کنید.
  • رسیدگی به Warning / Deprecated: در محیط dev سطح خطاها را روی E_ALL بگذارید تا پیام‌های deprecated دیده شوند و بتوانید آن‌ها را اصلاح کنید.
  • بهینه‌سازی عملکرد: برخی تغییرات جدید می‌توانند به بهبود عملکرد کمک کنند، اما گاهی ممکن است تغییری باعث کندی شود یا مصرف منابع بیشتر شود — بررسی و پروفایلینگ ضروری است.
  • مستندسازی و اطلاع کاربران: اگر کاربرانی دارید که افزونه یا ماژول سفارشی استفاده می‌کنند، آن‌ها را از تغییرات مطلع کنید.

راهنمای مهاجرت (Checklist)

مرحله کار قابل انجام
۱ بررسی نسخه کنونی PHP و سازگاری با 8.4
۲ فعال کردن نمایش خطاها و warnings در محیط توسعه
۳ بروز رسانی کتابخانه‌ها، فریم‌ورک‌ها یا افزونه‌ها
۴ اصلاح کدهایی که از توابع منسوخ شده استفاده می‌کنند
۵ تست کامل وب‌سایت (فورم‌ها، بارگذاری صفحات، عملکرد)
۶ بکاپ کامل از دیتابیس و فایل‌ها
۷ ارتقا به PHP 8.4 در محیط staging
۸ پس از اطمینان، ارتقا در محیط production

نتیجه‌گیری

نسخه جدید PHP 8.4 امکانات قابل توجهی در دسترس توسعه‌دهندگان می‌گذارد: از قابلیت Property Hooks و Asymmetric Visibility گرفته تا توابع جدید آرایه و ارتقاء پشتیبانی HTML5. اما هم‌زمان با این امکانات، تغییراتی نیز وجود دارد که اگر بی‌توجه باشید ممکن است پروژه‌تان دچار خطا یا ناسازگاری شود.

اگر در سایت «پویا وب»، قصد دارید پروژه‌ای را ارتقا دهید، پیشنهاد می‌کنم ابتدا در محیط staging تست کنید، خطاها و deprecatedها را رفع کنید،

09127174883 نمونه کارها