ارتقا به PHP 5.4 آری یا خیر
گروه آموزشی مجموعه تدبیر
با توجه به ارائه PHP 5.4 این سوال مطرح میگردد که آیا ارتقا به PHP 5.4 مفید خواهد بود؟
همیشه ارتقا به نسخههای جدید توسط تیم توسعه و پشتیبانی زبانهای برنامه نویسی توصیه میگردد، اما اینبار تیم توسعه PHP بدون توجه به میزان استفاده از نسخههای متفاوت PHP، استفاده کنندگان را نسبت به بهکارگیری نسخه جدید PHP 5.4 تشویق نمودهاست، این تیم اعلام نموده ۵ باگ اساسی در این نسخه برطرف شدهاست که در برگیرندهی CVE-2014-1943 نیز میباشد.
در ادامه قصد داریم برخی تغییرات PHP 5.4 را نسبت به نسخههای پیشین بررسی کنیم.
سرعت در PHP 5.4:
سرعت اجرای کدها در PHP 5.4 نسبت به نسخه ۵٫۳ آن تقریبا ۲ برابر شدهاست. دوبرابر شدن سرعت اجرای کد، بهینهسازی بالای قواعد زبان برنامه نویسی را میطلبد. برای آزمایش این موضوع کافی است یک آزمایش ساده انجام داد.
قطعه کد ساده زیر را در در شرایط مساوی سختافزاری و نرمافزاری بر روی یک سیستم با هر دو ورژن اجرا کردیم.
1
2
3
4
5
6
7
8
9
|
$r=10*1000*1000;
$start=microtime(true);
while($r–>0){
newStdClass();
}
$finish=microtime(true);
echo”time taken: “.($finish-$start).”n”;
|
نتیجه باورنکردنی بود، در نمودار زیر شما میتوانید تفاوت زمان اجرای کد را در در ورژن ۵٫۴ و ۵٫۳ مشاهده نمایید.
امنیت در PHP 5.4:
بنا به گزارش وبسایت رسمی PHP نسخه جدید PHP 5.4 به دلیل رفع باگهای زیر، از نظر امنیتی در سطح بالاتری نسبت به نسخههای قبل دارد.
JSON: | ||
باگ شماره ۶۵۷۵۳ (قابلیت JsonSerializeable برای اکستنشن ماژولها). | ||
Fileinfo: | ||
باگ شماره ۶۶۷۳۱ (فایل: بازگشت نامحدود یا CVE-2014-1943). | ||
باگ شماره ۶۶۸۲۰ (out-of-bounds در دسترسی به حافظه fileinfo یا CVE-2014-2270) | ||
LDAP: | ||
اجرای Implemented ldap_modify_batch | ||
Openssl: | ||
باگ شماره ۶۶۵۰۱ (افزودن کلید EC به php_openssl_is_private_key) | ||
Pgsql: | ||
اضافه شدن هشدار برای رمزگذاریهای خطرناک کاربران و حذف امکان حملات injections (تزریق) برای توابع pg_insert()/pg_update()/pg_delete()/pg_select(). |
-
ویژگیهای برنامه نویسی PHP 5.4:
توسعه دهندگان PHP توصیه کردهاند از mcrypt_generic_end() و mysql_list_dbs() در نسخه ۵٫۴ استفاده نشود. برخی از قابلیتهای در این نسخه دیگر وجود ندارد که میتوانید لیست کامل آنها را از این لینک مشاهده نمایید.
امکانات -قابلیتها- و توابع جدید در PHP 5.4 اضافه شدهاست که عبارتند از:
۱. |
امکانات و قابلیتهای جدید |
|||
پشتیبانی از Traitها | ||||
اضافه شدن syntax آرایههای کوتاه مانند $a = [1, 2, 3, 4]; or $a = [‘one’ => 1, ‘two’ => 2, ‘three’ => 3, ‘four’ => 4]; | ||||
اضافه شدنFunction array dereferencing مانند foo()[0] | ||||
پشتیبانی از Closureها | ||||
پشتیبانی از syntax کلاسهای مانند Class::{expr}() | ||||
اضافه شدن دسترسی اعضای کلاس به نمونهها مانند (new Foo)->bar() | ||||
در دسترس بودن همیشگی <?= بدون نیاز به افزودن short_open_tag در php.ini | ||||
پشتیبانی از فرمت اعداد باینری | ||||
ارتقا سیستم خطای parse (مترجم) و warnings (هشدارهای) ناسازگاری | ||||
امکان ردیابی فایلهای در حال آپلود به کمک session extension. | ||||
امکان گسترش Built-in وبسرور در CLI mode. | ||||
۲. |
توابع جدید در |
|||
هسته PHP | ||||
hex2bin() | ||||
http_response_code() | ||||
get_declared_traits() | ||||
getimagesizefromstring() | ||||
stream_set_chunk_size() | ||||
socket_import_stream() | ||||
trait_exists() | ||||
header_register_callback() | ||||
SPL: | ||||
class_uses() | ||||
Session: | ||||
session_status() | ||||
session_register_shutdown() | ||||
Mysqli: | ||||
mysqli_error_list() | ||||
mysqli_stmt_error_list() | ||||
Libxml: | ||||
libxml_set_external_entity_loader() | ||||
LDAP: | ||||
ldap_control_paged_result() | ||||
ldap_control_paged_result_response() | ||||
Intl: | ||||
transliterator_create() | ||||
transliterator_create_from_rules() | ||||
transliterator_create_inverse() | ||||
transliterator_get_error_code() | ||||
transliterator_get_error_message() | ||||
transliterator_list_ids() | ||||
transliterator_transliterate() | ||||
Zlib: | ||||
zlib_decode() | ||||
zlib_encode() |
همچنین در PHP 5.4 برخی از extensions تغییر و یا بهطور کامل حذف شدهاند، کارایی توابعی مانند debug_backtrace()، is_link() و openssl_encrypt() نیز تغییر کردهاست.
چه Loaderهایی از PHP 5.4 پشتیبانی میکند.