آنچه در این مقاله میخوانید
معرفی PHP 8.0
۵ مرداد ۱۳۹۹
PHP 7 تحولی بزرگ در دنیای توسعه وب ایجاد کرد. این نسخه، در مقایسه با PHP 5، با بهبودهای چشمگیر در سرعت، عملکرد و مدیریت منابع، توجه بسیاری از توسعهدهندگان را به خود جلب کرد. همچنین، بسیاری از نیازهای رایج در تجربه کاربری و برنامهنویسی مدرن را پاسخ داد و موقعیت این زبان را به عنوان یکی از گزینههای محبوب توسعه وب تثبیت کرد.
با این حال، هیچ زبان برنامهنویسیای کامل نیست. هر زبان برای همگام شدن با نیازهای روز و ارتقای تجربه توسعهدهندگان، باید بهطور مداوم بهروزرسانی شود. بنابراین، وقتی صحبت از PHP 8 میشود، انتظارات بهمراتب بیشتر است—ویژگیهایی مدرنتر، سازگاری بهتر با معماریهای نوین و شاید مهمتر از همه، پشتیبانی بهتر از قابلیتهای real-time.
قابلیت real-time امروزه به یک استاندارد در وب تبدیل شده است. کاربران انتظار دارند دادهها و محتوا بدون تأخیر و بهصورت آنی در اختیارشان قرار گیرد. زبانهایی مانند JavaScript (با Node.js) و Python (با Tornado) در این زمینه پیشتاز بودهاند، اما PHP در این رقابت، همچنان با محدودیتهایی روبهرو بوده است. با این حال، معرفی قابلیت JIT (Just-in-Time Compilation) در PHP 8، نوید تغییرات مهمی را میدهد که میتواند مسیر این زبان را بهسوی پشتیبانی بهتر از عملیات real-time هموار کند.
پیش از آنکه به بررسی دقیق قابلیتهای PHP 8 بپردازیم، بیایید نگاهی کوتاه به مسیر تکامل این زبان از نسخههای پیشین داشته باشیم.
در ادامه خواهید خواند:
- زبان برنامهنویسی PHP
- نسخههای قبلی PHP تا به امروز
- قابلیت Just In Time (JIT) در PHP 8.0
- مقدمه مختصری از JIT (Just-in-Time Compilation)
- چرا JIT در PHP معرفی شده است؟
- برنامههای PHP، چگونه کامپایل میشوند؟
- تاریخ انتشار PHP 8.0
- نسخه جدید PHP چیست و چه ویژگیهایی دارد؟
- جمع بندی

زبان برنامهنویسی PHP
PHP مخفف عبارت Hypertext Preprocessor، به عنوان یک پروژه متنباز کوچک شروع به کار کرد، سرانجام تکامل یافت و افراد بیشتری از فواید این زبان آگاه شدند. در سال ۱۹۹۴، Rasmus Lerdorf، برنامهنویسی کانادایی-دانمارکی اولین نسخه PHP را رونمایی کرد. PHP، یک زبان برنامهنویسی تعبیه شده (embedded) در HTML و سمت سرور است که امروزه بسیار محبوب شده.
از این زبان برای مدیریت محتوای پویا، session tracking، دیتابیس و حتی ساخت سایتهای تجارت الکترونیک، استفاده میکنند همچنین با دیتابیسهای محبوبی مانند MySQL, Oracle, PostgreSQL, Sybase, Microsoft SQL Server و Informix هماهنگ شده است.
PHP به خصوص زمانی که به عنوان ماژول Apache در سمت یونیکس کامپایل شد، اجرای موفقی از خود به نمایش گذاشت. در شروع کار با MySQL server هم کوئریهای پیچیدهای را در حجم زیادی از دادهها در مدت زمان کوتاهی اجرا کرد.
علاوه بر اینها از پروتکلهای IMAP, POP3 و LDAP پشتیبانی میکند. برای اولین بار، توسعه N-Tier در PHP قابل انجام شدن بود و در PHP4 پشتیبانی از Java و معماری توزیع شده آبجکت (COM و CORBA) را فراهم کرد. همچنین سینتکس برنامهنویسی شبیه زبان C را داراست.
چیز دیگری که در رابطه با این زبان وجود دارد، راحتی استفاده از آن است زیرا نه تنها توسعهدهندگان پیشرفته بلکه تازهکارها هم میتوانند از آن استفاده کنند. باید بگوییم این زبان برای توسعهدهندگان حرفهای هم ویژگیهای جالبی را با خودش به همراه داشته است.
با هاست PHP لیارا، اپلیکیشنهای خود را سریع، ایمن و بدون دردسر اجرا کنید.
✅ پشتیبانی کامل از نسخههای مختلف PHP✅ امکان اتصال آسان به پایگاهداده✅ استقرار سریع و مدیریت ساده
خرید و راهاندازی هاست PHP
نسخههای قبلی PHP تا به امروز
از گذشته تا به امروز، نسخههای مختلفی عرضه شدهاند، در این قسمت نسخههای پیشین این زبان را که در حال حاضر در دسترس هستند و اینکه تا چه زمانی در توسعه استفاده میشدهاند را بررسی میکنیم.
- 1.0 هشتم ژوئن سال ۱۹۹۵
- 2.0 یکم نوامبر ۱۹۹۷
- 3.0 ششم ژوئن ۱۹۹۸ تا بیست اکتبر ۲۰۰۰
- 4.0 بیستودوم می ۲۰۰۰ تا بیستوسوم ژوئن ۲۰۰۱
- 4.1 ده دسامبر ۲۰۰۱ تا دوازدهم مارس ۲۰۰۲
- 4.2 بیستودوم آوریل ۲۰۰۲ تا ششم سپتامبر ۲۰۰۲
- 4.3 بیستوهفتم دسامبر ۲۰۰۲ تا سیویکم مارس ۲۰۰۵
- 4.4 یازدهم ژوئیه ۲۰۰۵ تا هفتم آگوست ۲۰۰۸
- 5.0 سیزدهم ژوئیه ۲۰۰۴ تا پنج سپتامبر ۲۰۰۵
- 5.1 ۲۴ نوامبر ۲۰۰۵ تا ۲۴ آگوست ۲۰۰۶
- 5.2 ۲ نوامبر ۲۰۰۶ تا ششم ژانویه ۲۰۱۱
- 5.3 ۳۰ ژوئن ۲۰۰۹ تا ۱۴ آگوست ۲۰۱۴
- 5.4 ۱ مارس ۲۰۱۲ تا ۳ سپتامبر ۲۰۱۵
- 5.5 ۲۰ ژوئن ۲۰۱۳ تا ۲۱ ژوئیه ۲۰۱۶
- 5.6 ۲۸ آگوست ۲۰۱۴ تا ۳۱ دسامبر ۲۰۱۸
- 7.0 ۳ دسامبر ۲۰۱۵ تا 3 دسامبر ۲۰۱۸
- 7.1 ۱ دسامبر ۲۰۱۶ تا اول دسامبر ۲۰۱۹
- 7.2 ۳۰ نوامبر ۲۰۱۷ تا ۳۰ نوامبر ۲۰۲۰
- 7.3 ششم دسامبر ۲۰۱۸ تا دسامبر ۲۰۲۱
قابلیت Just In Time (JIT) در PHP 8.0
هنوز هیچ اطلاعاتی کاملی در مورد ویژگیهای آتی PHP 8.0 در دست نیست. با این وجود، احتمال اضافه شدن JIT در نسخه 8.0 PHP وجود دارد. برای درک بهتر JIT در PHP باید خلاصهای از آن بگوییم. just in time قابلیتی برای بهینهسازی کد اجرایی به هنگام کامپایل است.
این روش محبوب در جاوا با JVM یا همان ماشین مجازی جاوا و در V8 JavaScript VM هم که توسط گوگل ارائه شده و همچنین HHVM وجود دارد. پس اصطلاحا میتوان گفت، JIT گلوله نقرهای نیست (اشاره به خاص نبودن افزوده شدن این قابلیت)، زیرا هر دوی این زبانها از قبل از آن استفاده میکردهاند.
قبل از تکمیل شدن نسخه فعلی PHP 7.x، توسعه PHP بر روی بهبود عملکرد این زبان با استفاده از JIT متمرکز شده بود. این تلاش باعث بهبود چشمگیر رتبه در benchmarkها شد، با این حال ثابت شده است که پیشرفتهای جزئی باعث ارتقا برنامههای واقعی مانند Joomla و WordPress شده است. با توجه به پیشرفتهایی که در PHP نسخه 7.0 ارائه شد، عملکرد در PHP نسخههای 7.1 و 7.2 نسبتا متوسط شده و به همین دلیل تیم توسعه PHP دوباره شروع به کار بر روی پیادهسازی JIT کردند. هیچ تحلیل عمیقی از JIT در پروژههای PHP وجود ندارد، اما نتایج دلگرم کنندهای با خود به همراه دارد.
مقایسه PHP و Java، بهترین زبان برای توسعهی برنامههای وب کدام است؟
مقایسه PHP و Java
مقدمه مختصری از JIT (Just-in-Time Compilation)
در محاسبات، اجرای کدهای کامپیوتر که شامل کامپایل در طول اجرا (به هنگام اجرا یا run time) و نه قبل از اجرا، just-in-time میگویند (همچنین ترجمه پویا یا کامپایل run-time نامیده میشود).
به کمک این قابلیت سورسکد برنامه ما یا به عبارت دیگر bytecodeها به کدهای ماشین ترجمه میشوند و اجرای آنها به صورت مستقیم انجام میشود. سیستم پیاده سازی شده کامپایلر JIT به طور مداوم کدهای در حال اجرا را آنالیز میکند.
چرا JIT در PHP معرفی شده است؟
همانطور که قبلا اشاره کردیم، HHVM (رانتایم جایگزینی که توسط فیسبوک توسعه داده شده و از آن استفاده میکند) از JIT استفاده میکند و در مقایسه با موتور رسمی PHP، سریعتر و بهتر است.
بنابراین، به دلیل محبوبیت شدید HHVM یا تقاضای زیاد جامعه PHP در سراسر جهان، مجدداً نظرها به JIT Engine، جلب شد و گروههای توسعه Zend و PHP تصمیم گرفتند که این قابلیت را در نسخه 8.0 PHP معرفی کنند.
اگر کدهایی که در PHP 5 نوشته شدهاند را بدون هیچ تغییری با PHP 7 اجرا کنید، عملکرد دو برابر میشود. این تغییر عملکرد به دلیل تغییر در موتور PHP نبوده بلکه بهینه سازیهای دیگری در PHP 7 انجام شده. از این رو میتوانیم باور داشته باشیم، که مطمئنا بهروزرسانی در موتور PHP، باعث بهبود عملکرد در قسمتهای مختلفی شود. همانطور که از استانداردهای HHVM میدانیم، سطح عملکرد میتواند دو برابر شود یا به عبارت دیگر زمان اجرای برنامههایی که با PHP 7 نوشته شدهاند، نصف میشوند.
به عبارت دیگر برای کامپایل در زمان اجرای برنامه یا رانتایم، Jit یا Just-in-Time یکی از بهترین راهحلهای این کار است زیرا قبل از اجرا نیازی به پرداختن به بحث کامپایل نیست و در مواردی که زمان بسیاری مصرف میشود، این گزینه اهمیت بیشتری پیدا میکند. که میتوان آن را یک عملیات کامپایل پویا دانست که نتیجههای سریعتری را در مقابل کامپایل کدها قبل از اجرا، ارائه میدهد.
از آنجایی که بسیاری از فریمورکهای Java و .NET با JIT پیاده سازی شدهاند، خوب است که PHP هم در قدمهای بعد خود از مزیتهای کامپایل پویا و عملکرد بهتر آن استفاده کند.
برای درک بهتر این موضوع، به بررسی جزئی دلایل میپردازیم.
۱) PHP در تکامل خود با مانع روبرو شده است
از آنجایی که در PHP 7.0 بسیاری از پیشرفتهای مورد نیاز انجام شدهاند، مانند بهینهسازی HashTable، تخصصیتر شدن کامپایلر برای بعضی توالیها، خاصتر شدن Zend VM برای کدهای خاص (OpCodes) و …
با این پیشرفتها، PHP توانایی بیشتری برای ایجاد تغییرهای بزرگتر بوجود آورده است.
۲) PHP برای سناریوهای غیر از وب
پس از افزوده شدن JIT به PHP، امکان استفاده از آن در سناریوهایی که حتی امروزه درنظر گرفته نمیشوند، فراهم میشود. در سناریوهای غیر از وب یا سناریو CPU-intensive یا به خصوص در مواردی که عملکرد بسیار ضروری باشد.
۳) پیادهسازی ایمنتر، نوآوریهای سریعتر
به دلیل پشتیبانی از JIT، تیم توسعه میتوانند توابع داخلی را به زبان PHP، بهجای زبان C بدون از دست رفتن عملکرد، ایجاد کنند. PHP با استفاده از مزیتهای JIT، میتواند با مشکلهای کمتری در overflow، مدیریت حافظه و سایر موارد مشابهی که در زبان C اتفاق میافتد، روبرو شود.
آینده زبان برنامهنویسی PHP
برنامهنویسی PHP
برنامههای PHP، چگونه کامپایل میشوند؟
برای این کار یک ماشین مجازی بهنام Zend VM وجود دارد. اسکریپتهای قابل خواندن توسط انسان را به دستورهایی که آن را OpCodes میشناسند، تبدیل میشود که این کدها برای ماشین مجازی قابل درک است.
دستورهای کامپایل شده یا همان OpCodeها، در مقایسه با کدهای اصلی PHP برای ترجمه شدن به کدهای ماشین، سریعتر هستند زیرا این دستورهای سطح پایین (low-level) به شمار میآیند. این مرحله در زمان کاپایل، execution stage خوانده میشود. اجرای این دستورهای کامپایل شده که گفتیم OpCodes نام دارند، توسط Zend Vm در runtime stage انجام میپذیرد.
تاریخ انتشار PHP 8.0
با توجه به روند بهروزرسانیهای قبلی PHP، چند سال زمان میبرد تا تیم توسعه PHP یک نسخه جدید را ارائه دهند. آخرین نسخه Major زبان PHP درDecember سال ۲۰۱۵ ارائه شده است اگرچه هر سال چند آپدیت جزئی (minor) مانند 7.0، 7.1، 7.2 ارائه میشود میتوانیم بگوییم که بهروزرسانی Major بعدی همان PHP 8.0 خواهد بود.
اگر درمورد نسخههای minor و Major چیزی نمیدانید، مقاله: نسخهگذاری معنادار (Semantic Versioning) چیست و چرا باید از آن استفاده کنیم؟ به شما کمک میکند.
PHP نسخه 8 در تاریخ 26 November سال 2020 یا به تاریخ شمسی خودمان، ششم آذرماه سال 1399 انتشار پیدا میکند.
نسخه جدید PHP چیست و چه ویژگیهایی دارد؟
اگر با PHP کار کرده باشید، احتمالاً همیشه دنبال این بودهاید که بدانید نسخه جدید چه چیزی برایتان به ارمغان میآورد. در حال حاضر، جدیدترین نسخه پایدار PHP، نسخه ۸.۳ است. این نسخه نهتنها از نظر سرعت و کارایی نسبت به نسخههای قبلی بهتر شده، بلکه امکانات تازهای هم به آن اضافه شده که توسعهدهندگان را حسابی خوشحال میکند.
از جمله مهمترین ویژگیهای PHP 8.3 میتوان به موارد زیر اشاره کرد:
- پشتیبانی از Typed Class Constants: حالا میتوانید برای constantها، نوع مشخص کنید و کدتان را ایمنتر و دقیقتر بنویسید.
- بهبود در خوانایی و رفع باگها: خطاهای متداول سادهتر تشخیص داده میشوند و پیامهای خطا بهبود یافتهاند.
- بهینهسازیهای JIT: موتور JIT در این نسخه بهبود یافته و باعث افزایش سرعت اجرا در برخی اسکریپتها شده است.
- پشتیبانی بهتر از قابلیتهای تابعی (Functional Programming): نوشتن کدهای تابعی در PHP 8.3 سادهتر و تمیزتر شده است.
این ویژگیها باعث شدهاند PHP همچنان یکی از زبانهای محبوب برای توسعه وب باقی بماند و پروژههای بزرگ و مدرنتری را با آن پیادهسازی کنید.
تبدیل object به array در زبان PHP
array در زبان PHP
جمع بندی
یکی از مهمترین مزیتهای PHP این است که هم در سیستمهای لینوکسی و هم در وبسرورهای ویندوزی اجرا میشود. احتمال دارد که این زبان مدت زمان زیادی در اکوسیستم ساخت وب بماند. این زبان در فهرست TIOBE در رتبه هشتم قرار گرفته است و این نشانگر علاقه توسعهدهندگان به این زبان است.
براساس گزارشهای ماهانه Netcraft، حضور این زبان بیشتر در میان وب سرورهای Nginx (29 درصد)، Microsoft (19 درصد) و Apache (29 درصد) بوده است.
منبع: https://www.covetus.com/blog/php-80-the-upcoming-version-of-php-and-the-inclusion-of-jit