اگر شما با قصد تغییر و مهاجرت از PHP 5 به PHP 7 برای وبسایت یا پروژه خود به سراغ این مقاله آموزشی آمدید،
پس اول آگاه باشید که زمان شما به پایان رسید. این دیگر خیلی دیر هست. به نحوی شما باید این کار را حالا تمام کنید. به بعد موکول نکنید.
می دانم این کار شاید طاقت فرسا باشد. اصلا نمی دانیم که کجای پروژه شما ممکن است با مشکل روبرو شود.
در حال حاضر شاید پروژه یا سایت شما با ورژن ۵٫۶ php خوب کار کند ولی اگر به ورژن php 7 تغییر بدید اصلا نمی توان گفت که درست کار خواهد کرد یا نه. برای همین همه این کار حساس را به تعویق می اندازند
نترسید, در آموزش مهاجرت از PHP 5 به PHP 7 راهنمایی های لازم را برای تغییر ارائه می دهیم. من این کار را برای کلی سایت و پروژه php انجام دادم و تجربه ای دارم که می توانید روش حساب کنید.
در این مقاله تجربیات خودم را از مهاجرت از PHP 5 به PHP 7 با شما به اشتراک می گذارم.
ارتقا محیط نصب, توسعه یا سرور به PHP 7
من فقط برای تغییر نسخه php پروژه یا سایت شما را راهنمایی می کنم.
برای ارتقا نسخه آپاچی یا php نصب شده در سرور می توانید با مدیرسرور یا هاستینگ در ارتباط باشید که البته در بیشتر سرورهای امروزی نسخه های بروز نصب شده است و نیازی به تغییر در سرور ندارید.
اگر از هاست اشتراکی استفاده می کنید که این گزینه را در کنترل پنل (cpanel یا direct admin) دارید که با یک کلیک ساده ورژن php را تغییر می دهید.
اگر هم نداشت که با تیکت زدن به هاستینگ این کار را برای شما انجام می دهند.
اگر هم سرور اختصاصی یا مجازی دارید که نگرانی در این مورد ندارید و به راحتی می توانید نسحه جدید را نصب یا نسخه پیش فرض را تغییر بدید.
به هر حال تغییر ورژن php پروژه یا وبسایت باید توسط شما انجام شود و این در اختیارات یا وظایف هاستینگ یا مدیرسرور نیست و باید توسط توسعه دهنده PHP انجام شود.
ورژن های PHP , پشتیبانی و EOL
چرا الان؟ چرا تغییر ورژن php و مهاجرت از PHP 5 به PHP 7 مهم است؟
قبل از پرداختن به این موضوع, نیاز است در مورد ورژن های php ، مدت زمان پشتیبانی آنها از سمت سازنده و جزئیات EOL یا همان پایان زندگی آن بدانید.
https://www.php.net/supported-versions.php
رنگ ها نمایان گر جزئیات ورژن های مختلف در طول زمان است.
در تصویر بالا می بینید که eol ورژن ۵٫۶ php در سال ۲۰۱۸ به پایان رسیده و برای ۷٫۱ در اواخر ۲۰۱۹ انجام شده و رنگ سبز برای ۷٫۳ و ۷٫۴ به معنای این است که در حال حاضر می توانید ازش استفاده کنید.
چرا باید مهاجرت از PHP 5 به PHP 7 انجام شود؟
انتشار نسخه پایدار ورژن php 5.6 در نزدیکی اواخر ۲۰۱۷ پایان یافته و در اواخر ۲۰۱۸ به پایان چرخه حیات رسیده است.
بعد از ۵٫۶ ما ۷٫۰ و ۷٫۱ و… داشتیم و در حال حاضر ۷٫۴ را داریم.
چندی پیش یک از مشتریان من ایمیلی که اخیرا از هاستینگ دریافت کرده بود را برای من فروارد کرد که میزبانی وب به او ده روز فرصت داده بود که ورژن php را از ۵٫۶ به ۷٫۲ ارتقا دهد که در صورت عدم انجام این بروزرسانی، بصورت خودکار نسخه php توسط خودشان به ۷٫۲ تغییر می کنید.
حتی وردپرس هم دیگر نسخه های ۵ php پشتیبانی نمی کند و ناچارید از نسخه ۷ به بالا استفاده کنید.
بنابراین اگر پروژه یا سایت شما روی هاست اشتراکی است به زودی مجبور می شوید که این مهاجرت از PHP 5 به PHP 7 را انجام دهید.
پس بهتر است خودتان این تغییر را انجام بدید تا به راحتی برنامه ریزی و اجرا کنید.
امنیت (Security)
اگر فقط یک دلیل قانع کننده برای تغییر ورژن php از ۵ به ۷ وجود داشته باشد آن هم امنیت است.
امروزه آسیب پذیری های زیادی مربوط به ورژن های ۵ php پابلیک شده که توسط تیم PHP فیکس شدند.
لیست باگ هایی که پابلیک شدند را از این لینک ببینید
اما اگر ورژن PHP به پایان چرخه زندگی (EOL) خود رسیده باشد، هیچ بروزرسانی نخواهد داشت و سایت شما رسما مسیر را برای حمله هکرها هموار می کند.
پس مهم است که ورژن php را همین الان ارتقا بدید.
کارایی (Performance)
تحقیقات زیاد و گسترده ای انجام شده که نسخه ۷ php عملکرد ۱۰۰درصدی نسبت به نسخه های ۵ دارد.
راسموس لردورف http://talks.php.net/fluent15#/php7
بنابراین کارایی خوب چطور به وبسایتتون کمک می کند؟ برای یک ثانیه لگ, حداقل ۱۰% بازدیدکنندگان را از دست می دهید.
موتورهای جستجو اولیت نمایش نتایج جستجو را به سایت هایی با لود بالا می دهند. (یکی از فاکتورهای مهم سئو)
آیا این دلایل کافی نیستند؟
بر طبق گفته Christian Vigh نسخه ۷ php به اندازه ۴۰۰درصد سریعتر از ۵٫۲ هستند.
لینک : https://www.phpclasses.org/blog/post/493-php-performance-evolution.html#performance
امکانات جدید PHP
توسعه دهندگان باید به ابزارهای خوبی مجهز شوند. وقتی زبان ها مجموعه خوبی از ویژگی ها را ارائه میدهند, توسعه دهنده را قادر می سازد تا محصول خوبی تولید کند.
برخی از امکانات قابل دسترس در ورژن php 7 را می بینید :
- نوع ها به صورت دقیق تری تعریف شده اند
- خطا ها مدیریت بهتری پیدا کرده اند
- موتور Zend بهبود پیدا کرده است
- از نسخه ۶۴ بیتی پشتیبانی میشود
- انواع کلاس های بدون نام
- اپراتورهای مقایسه ای ترکیب شده اند
- کارایی بیشتر و سرعت بالاتر
- حذف مواردی که در رده های خارج شده در نسخه های پیشین استفاده میشد
- ایجاد عملگر های جدید
- مرتب سازی متغیرها و تعریف کردن مقادیر برای هر یک
- Scalar type declarations
- Return type declarations
- Null coalescing operator
- Spaceship operator
- Anonymous classes
- IntlChar
- CSPRNG Functions
سازگاری به عقب (Backwards)
این نکته کلیدی برای مهاجرت از PHP 5 به PHP 7 است.
ممکن از قابلیت یا تابعی استفاده کرده باشید که فقط در نسخه پایین موجود باشد و نسخه جدید حذف شده است.
در اینجا لیستی از تغییرات ناسازگار بین نسخه ۵٫۶ و ۷٫۰ وجود دارد :
- set_exception_handler() is no longer guaranteed to receive Exception objects
- Internal constructors always throw exceptions on failure
- Parse errors throw ParseError
- list() no longer assigns variables in reverse order
- Empty list() assignments have been removed
- list() cannot unpack strings
- Array ordering when elements are automatically created during by reference assignments has changed
- Parentheses around function arguments no longer affect behaviour
- foreach no longer changes the internal array pointer and more changes.
- Changes to Division By Zero and more integer handling changes.
- Hexadecimal strings are no longer considered numeric and more string handling changes.
- All ext/mysql functions and more list of functions removed.
- New objects cannot be assigned by reference
- Switch statements cannot have multiple default blocks
- JSON extension replaced with JSOND
کاملترین منبع از تغییرات را با مثال کامل اینجا میتونید ببینید :
https://www.php.net/manual/en/migration70.incompatible.php
قابلیت های منسوخ PHP 7.0
اگر قبلا از نسخه ۷٫۰ استفاده می کردید باید بدانید که رو به جلو باید حرکت کنید و اگر ویژگی های منسوخ را استفاده کردید باید تغییر بدید.
لیست ویژگی های منسوخ نسخه ۷٫۰ :
- استایل
constructor
نسخه php 4 - صدا زدن متدهای
static
به روش غیر استاتیتک - گزینه salt تابغ
password_hash()
- منسوخ شدن تابع
ldap_sort()
- گزینه
capture_session_meta
مربوط به ssl
لیست بیشتری از تغییرات که نگاهی با آن بیاندازید
- تغییر آرگومان توابع و نوع داده برگشتی https://www.php.net/manual/en/migration70.changed-functions.php
- توابع، کلاس ها و اینترفیس های جدید https://www.php.net/manual/en/migration70.classes.php
- ثابت های سراسری جدید https://www.php.net/manual/en/migration70.constants.php
- لیست SAPIs های حذف شده https://www.php.net/manual/en/migration70.removed-exts-sapis.php
مراحل مهاجرت از PHP 5 به PHP 7
- از وبسایت، پروژه، دیتابیس و داده های آن بکاپ بگیرید (فول بکاپ)
- مطمئن شوید که هاست شما قابلیت رول بک یا برگشتن به ورژن قبل php را داشته باشد که اگر احیانا مشکلی پیش آمد بتونید برگردانید
- سازگاری ورژن PHP را با نسخه کتابخانه، پلاگین، ماژول ها بررسی کنید.
- یک چک لیست برای تمام مواردی که تغییر دادید داشته باشید تا خواستید رول بک بدید مشکلی نباشد.
- بر اساس لیست بالایی که از ناسازگاری ها داده شد تغییرات را لحاظ کنید.
- از یک IDE مثل PHPStorm استفاده کنید که اگر با تغییر نسخه PHP مشکلی در جایی از پروژه یا خطایی در یک کتابخانه پیش آمد بتونید حل کنید.
- کدها را Refactor کنید.
- کدها را داخل محیط اجرای سرور راه اندازی کنید
- تست کنید
- اگر تمام قابلیت ها و بخش های اپلیکیشن اوکی بود می توانید عمومی کنید.
امیدوارم از آموزش مهاجرت از PHP 5 به PHP 7 نهایت استفاده را برده باشید.
هر سوال یا مشکلی در ربطه با این آموزش داشتید، از قسمت نظرات ارسال کنید. سریعا، پاسخگوی سوالات شما هستیم.
موفق و پیروز باشید.