ارتقا به PHP 5.4 آری یا خیر

ارتقا به 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 به دلیل رفع باگ‌های زیر، از نظر امنیتی در سطح بالاتری نسبت به نسخه‌های قبل دارد.

ico-meta JSON:
ico-meta  باگ شماره ۶۵۷۵۳ (قابلیت JsonSerializeable برای اکستنشن ماژول‌ها).
ico-meta Fileinfo:
ico-meta  باگ شماره ۶۶۷۳۱ (فایل: بازگشت نامحدود یا CVE-2014-1943).
ico-meta  باگ شماره ۶۶۸۲۰ (out-of-bounds در دسترسی به حافظه fileinfo یا CVE-2014-2270)
ico-meta LDAP:
ico-meta  اجرای Implemented ldap_modify_batch
ico-meta Openssl:
ico-meta  باگ شماره ۶۶۵۰۱ (افزودن کلید EC به php_openssl_is_private_key)
ico-meta Pgsql:
ico-meta  اضافه شدن هشدار برای رمزگذاری‌های خطرناک کاربران و حذف امکان حملات injections  (تزریق) برای توابع ‏pg_insert()/pg_update()/pg_delete()/pg_select()‎.
  • ویژگی‌های برنامه نویسی PHP 5.4:

     

توسعه دهندگان PHP توصیه کرده‌اند از mcrypt_generic_end()‏‎ و ‏mysql_list_dbs()‎ در نسخه ۵٫۴ استفاده نشود. برخی از قابلیت‌های در این نسخه دیگر وجود ندارد که ‌می‌توانید لیست کامل آن‌ها را از این لینک مشاهده نمایید.

امکانات -قابلیت‌ها-  و توابع جدید در PHP 5.4 اضافه شده‌است که عبارتند از:

 ۱.

 امکانات و قابلیت‌های جدید

ico-meta   پشتیبانی از  Traitها
ico-meta اضافه شدن syntax آرایه‌های کوتاه مانند ‏$a = [1, 2, 3, 4]; or $a = [‘one’ => 1, ‘two’ => 2, ‘three’ => 3, ‘four’ => 4];‎
ico-meta اضافه شدنFunction array dereferencing مانند foo()[0]‏‎
ico-meta  پشتیبانی از Closureها
ico-meta  پشتیبانی از syntax کلاس‌های مانند ‏Class::{expr}()‎
ico-meta اضافه شدن دسترسی اعضای کلاس به نمونه‌ها مانند ‏(new Foo)->bar()‎
ico-meta  در دسترس بودن همیشگی ‏<?=‎ بدون نیاز به افزودن short_open_tag در php.ini
ico-meta پشتیبانی از فرمت اعداد باینری
ico-meta  ارتقا سیستم خطای parse (مترجم) و warnings (هشدارهای) ناسازگاری
ico-meta  امکان ردیابی  فایل‌های در حال آپلود به کمک session extension.
ico-meta  امکان گسترش Built-in وب‌سرور در CLI mode.

 ۲.

 توابع جدید در

 ico-meta  هسته PHP
ico-meta  hex2bin()
ico-meta  http_response_code()
ico-meta  get_declared_traits()
ico-meta  getimagesizefromstring()
ico-meta  stream_set_chunk_size()
ico-meta  socket_import_stream()
ico-meta  trait_exists()
ico-meta  header_register_callback()
 ico-meta  SPL:
ico-meta  class_uses()
 ico-meta Session:
ico-meta  session_status()
ico-meta  session_register_shutdown()
 ico-meta Mysqli:
ico-meta  mysqli_error_list()
ico-meta  mysqli_stmt_error_list()
 ico-meta Libxml:
ico-meta  libxml_set_external_entity_loader()
 ico-meta LDAP:
ico-meta  ldap_control_paged_result()
ico-meta  ldap_control_paged_result_response()
 ico-meta Intl:
ico-meta  transliterator_create()
ico-meta  transliterator_create_from_rules()
ico-meta  transliterator_create_inverse()
ico-meta  transliterator_get_error_code()
ico-meta  transliterator_get_error_message()
ico-meta  transliterator_list_ids()
ico-meta  transliterator_transliterate()
 ico-meta Zlib:
ico-meta  zlib_decode()
ico-meta  zlib_encode()

همچنین در PHP 5.4 برخی از extensions تغییر و یا به‌طور کامل حذف شده‌اند، کارایی توابعی مانند  debug_backtrace()، is_link() و  openssl_encrypt() نیز تغییر کرده‌است.

چه Loaderهایی از PHP 5.4 پشتیبانی می‌کند.