آخرین نسخه php - ویژگی های php 7 را بهتر بشناسید

5 0 نظر
دپارتمان: آموزش طراحی سایت

زبان برنامه‌نویسی PHP پرکاربردترین زبان برنامه‌نویسی تحت وب است. با توجه به اینکه PHP برای وب سایت های سمت سرور سهم بزرگی را دارد، حدود 80 درصد وب سایت ها از زبان PHP بهره مند هستند. یکی از وب سایت های معروفی که از زبان برنامه نویسی سمت سرور استفاده میکند وب سایت Facebook است که به طور میانگین حدود 5/1 میلیارد ماهانه کاربر فعال دارد. این ها نشان دهنده مهم بودن php و همچنین توسعه آن در فضای وب است. البته بررسی های دقیق نشان دهنده این هستند که حدود 3/1 درصد از وب سایت ها از PHP7 استفاده میکنند و تقریبا 1/1 درصد انها به شکل عجیبی از PHP4 استفاده میکنند. ( PHP4 در سال 2005 کاملا کنار گذاشته شده است.)

 نسخه PHP7 در سال ۲۰۱۸ منتشر شد و بعد از آن چند آپدیت بر روی آن نیز منتشر شده است. در این مقاله سعی داریم ویژگی ها، کلاس ها، توابع و ... جدید در php7 را بررسی کرده و به شما معرفی کنیم. در ادامه همراه ما باشید.

 

آموزش phpآموزش مرتبط: آموزش php پروژه محور

 

ویژگی های php7

 

ویژگی های php 7 را بهتر بشناسید

در لیست زیر برخی از امکانات و ویژگی های php7 آورده شده است که در ادامه هر کدام را با مثال تشریح کرده ایم:

  • نوع ها به صورت دقیق تری تعریف شده اند
  • خطا ها مدیریت بهتری پیدا کرده اند
  • موتور Zend بهبود پیدا کرده است 
  • از نسخه 64 بیتی پشتیبانی میشود
  • انواع کلاس های بدون نام
  • اپراتورهای مقایسه ای ترکیب شده اند
  • کارایی بیشتر و سرعت بالاتر
  • حذف مواردی که در رده های خارج شده در نسخه های پیشین استفاده میشد
  • ایجاد عملگر های جدید
  • مرتب سازی متغیرها و تعریف کردن مقادیر برای هر یک
  • Scalar type declarations
  • Return type declarations
  • Null coalescing operator
  • Spaceship operator
  • Anonymous classes
  • IntlChar
  • CSPRNG Functions

 

سرعت و کارایی بالاتر نسخه 7

سرعت PHP7 نسبت به نسخه های قبلی بسیاربالاتر بوده و یکی از دلایل اصلی اصلی ارتقا سرورها به PHP7 بوده است. به طور میانگین سرعت هر فایلی که در PHP7 اجرا میشود دو برابر php5.6 است. PHP7 با سرعت بالایی که دارد میتواند تعداد درخواست هایی که در ثانیه اجرا میکند، دو برابر بیشتر از نسخه قبلی خود باشد. به عنوان مثال تعداد دستورالعمل هایی که در نسخه قبلی برای اجرای صفحه سایت وردپرس  موردنیاز بود حدود 9.4 میلیون دستورالعمل بود که با ایجاد تغییرات در نسخه جدید ( ایجاد هسته جدیدی به نام PHPNG)، این تعداد به 2.2 میلیارد کاهش و سرعت بالاتری پیدا کرد.

 

حذف ماژول‌های ereg و mysql

با وجود هشدارهای زیاد گروه توسعه PHP مبنی بر اینکه به دلیل ضعیف بودن این ماژول، برنامه نویسان زیادی در سرتاسر جهان از آن استفاده میکردند و توجهی به هشدارها نداشتند. و بعد از انتشار نسخه 7 و حذف ماژول mysql وهمچنین جایگزینی ماژول ereg به نام PCRE، این خبر، خبر بدی برای آن دسته از برنامه نویسانی بود که توجهی به اخطارها نداشتند. البته حذف و تغییر نام این ماژول ها مشکلی را برای برنامه نویسان به وجود نیاورد.

 

نوع ‎گذاری قوی Strong Type برای مقادیر رشته های متنی و عددی

در نهایت در نسخه 7، برای مقادیر برگشتی و پارامترها از نوع گذاری strong-type استفاده میشود. به طور پیش فرض برای این کار اجباری در نظر گرفته نشده است. اما اگر به جای عدد صحیح در پارامتری، اعداد اعشاری داده شود، PHP7 بدون آنکه خطایی دهد آن را تبدیل میکند. البته میتوان تعریف کردن که خطا نشان داده شود که باید strict را در این حالت روشن کرد.

 

  متغیر ها در php مقاله مرتبط: آشنایی با انواع متغیر ها در php

 

مفهوم Scalar type declaration و Return type declarations

اصطلاح «بیان نوع داده» در برنامه‌نویسی برای مترجم برنامه تعیین می‌کند که یک داده از چه نوع مشخصی است. اگر ورودی از نوع داده‌ای مشخص‌شده نباشد، برنامه در اجرا با خطا روبرو می‌شود. در PHP 5 نیز بیان نوع داده وجود داشت اما داده‌های در اصطلاح non-scalar قابلیت تعریف داشتند. اما مقادیر بازگشتی از توابع (return types) این امکان را نداشتند. در نسخه 7 این قابلیت ایجاد شده است.

 همچنین اظهارات از نوع Scalar برای مدت زمان طولانی یکی از ویژگی‌های مورد نیاز برنامه‌ نویسان در PHP بوده است و بحث طولانی در مورد روش صحیح اجرای آنها صورت گرفته است. این ویژگی در PHP 7 اضافه شد. 

 

اعلان نوع مقیاس در PHP 7 چیست؟

اعلان نوع  Scalar که آرگومان‌های (پارامترها) ورودی یا مقادیر بازگشی از یک تابع تنها مقادیر داده‌های مقیاس داده شده (int ، float ، string یا bool) است. برای تعیین یک بیان از نوع Scalar، قبل از نام پارامتر باید نام نوع داده‌های مقیاس اضافه شود. به مثال توجه کنید:



<?php

// weak mode

$a='x'; // string

$b=2; //integer

function FunctionName (int $a, int $b){

return $a * $b;

}

echo FunctionName ($a, $b);

?>

این کد با خطا از سمت PHP مواجه می‌شود. علت آن این است که در تعریف اولیه FunctionName، مقدار داده‌ای a از نوع رشته است. اما در آرگومان عملگر، مقدار عددی ارسال شده که اشتباه است.

 

Null Coalescing Operator

در PHP 7 ، یک ویژگی جدید به نام اپراتور انعطاف‌پذیری null (؟؟) معرفی شده است. از آن برای جای‌گزینی عملیات سه‌ گانه همراه با عملکرد صادر شده () استفاده می‌شود. کاربرد این عملگر به عنوان جایگزین ternary است. در صورت وجود عملگر همسان‌سازی Null اولین عملكرد خود را در صورت وجود و تهی نبودن برمی‌گرداند. در غیر این صورت عمل دوم خود را برمی‌گرداند. به مثال زیر توجه کنید:

 

<?php

   // fetch the value of $_GET['user'] and returns 'not passed'

   // if username is not passed

   $username = $_GET['username'] ?? 'not passed';

   print($username);

   print("<br/>");


   // Equivalent code using ternary operator

   $username = isset($_GET['username']) ? $_GET['username'] : 'not passed';

   print($username);

   print("<br/>");

   // Chaining ?? operation

   $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed';

   print($username);

?>

 

خروجی این کد در مرورگر به شرح زیر است:

not passed
not passed
not passed

 

 

spaceship operator

اپراتور سفینه فضایی با "<=>" مشخص می‌شود. این یک عملگر مقایسه سه‌جانبه است و می‌تواند مقایسه بیشتر، کمتر و مساوی بین دو عمل‌گر را انجام دهد. این عملگر دارای رفتارهای مشابه مانند strcmp یا version_compare است. این عملگر را می‌توان با اعداد صحیح، اعشاری، رشته، آرایه، اشیاء و غیره استفاده کرد.

این <=> اپراتور مقایسه ترکیبی ارائه می‌دهد:

  • اگر مقادیر هر دو طرف مساوی باشد صفر را باز می‌گرداند.
  • اگر مقدار در سمت چپ بیشتر است ، مقدار 1 را باز می‌گرداند.
  • اگر مقدار در سمت راست بیشتر است ، مقدار 1- را باز می‌گرداند.

 

// Comparing Integers

echo 1 <=> 1; // outputs 0

echo 3 <=> 4; // outputs -1

echo 4 <=> 3; // outputs 1

// String Comparison

echo "a" <=> "a"; // outputs 0

echo "m" <=> "y"; // outputs -1

echo "y" <=> "c"; // outputs 1

 

توابع و کلاس های جدید php 7

 

Anonymous classes

پشتیبانی از کلاسهای ناشناس در PHP 7 اضافه شده است. کلاسهای ناشناس هنگام استفاده از اشیاء ساده و یک طرفه مفید هستند. در ابتدا نمونه‌ی نوشتن کد در نسخه‌های قبلی را ببینید:

class Logger
{
publicfunction log($msg)
    {
        echo $msg;
    }
}

$util->setLogger(new Logger());

 

اما از نسخه‌ی 7 به بعد به این شکل تغییر کرد:

$util->setLogger(new class {
    public function log($msg)
    {
        echo $msg;
    }
});

 

IntlChar

درPHP7 ، یک کلاس IntlChar جدید اضافه شده است که به دنبال استفاده‌ی برخی قابلیت‌های اضافی ICU است. این کلاس تعدادی از متدهای استاتیک را تعریف می‌کند، که می‌توانند برای کار با کاراکترهای یونیکد استفاده شوند. قبل از استفاده از این کلاس باید افزونه Intl را نصب کنید.

 

CSPRNG

اعداد و رشته‌های تصادفی ایجاد شده توسط برنامه رایانه‌ای کاربردهای زیادی در زمینه رمزنگاری، علوم، هنر، آمار، بازی و غیره دارند. به عنوان مثال در سیستم‌های قرعه‌کشی شماره برنده عدد تصادفی است که توسط برنامه رایانه تولید می‌شود.

هنگامی که شماره تلفن خود را در وب سایت خاصی ثبت می‌کنیم، آن وب سایت با ارسال یک شماره تصادفی از طریق پیامک، برای تکمیل مراحل احراز هویت، تلفن ما را تأیید می‌کند یا در صورت فراموش کردن رمز عبور، رمز عبور موقت دریافت می‌کنیم که چیزی نیست فقط یک رشته تصادفی یا یک عدد صحیح است. این اعداد یا رشته های تصادفی، در جایی از پس زمینه توسط برنامه‌های رایانه تولید می‌شوند. این عمل با قابلیت جدید "CSPRNG" در PHP 7 انجام می‌شود.

CSPRNG مخفف "Cryptographically Secure Pseudo-Random Number Generator" است. در رمزنگاری برای تولید کلید، رمز یک بار مصرف، و غیره، به شماره‌های تصادفی نیاز داریم. از این رو، CSPRNG به این پدیده نامگذاری شده است. PHP 7 شامل دو عملکرد جدید است که برای تولید اعداد صحیح تصادفی رمزنگاری و رشته ها به روش متقاطع فراهم شده است. این توابع به شرح زیر است.

  • random_bytes: این تابع برای تولید رشته‌های دلخواه از بایت‌های شبه-تصادفی به صورت رمزنگاری امن استفاده می‌شود.
  • random_int: این تابع برای تولید اعداد صحیح تصادفی دررمزنگاری استفاده می‌شود.

 

در ادامه مثال‌هایی از این دو مورد آورده می‌شود:

مثال برای random_bytes

<?php
$bytes = random_bytes(5);
var_dump(bin2hex($bytes));
?>

خروجی:

string(10) "385e33f741"

 

مثال برای random_int

<?php
var_dump(random_int(100, 999));
var_dump(random_int(-1000, 0));
?>

خروجی:

int(248)
int(-898)

 

آپدیت‌های PHP 7 شامل چه مواردی است؟

هر نسخه اصلی از زبان برنامه‌نویسی به دلیل وجود برخی مشکلات یا ناسازگاری‌های مدام دچار تغییرات می‌شود. تاکنون نسخه 7 PHP تا ورژن 7.4.6 به روز رسانی شده است. اغلب این تغییرات شامل رفع باگ و یا سازگاری با بانک‌های اطلاعاتی است. لیست کامل این تغییرات را می‌توانید از این لینک مشاهده کنید.

 

تفاوت PHP 7 و PHP 5 چیست؟

  • سرعت php7 از نسخه های قبلی خود یعنی نسخه 6/5 خیلی سریعتر است.
  • در php7 خطاهای موجود رفع اشکال شده اند و مدیریت خطا سطح بالاتری پیدا کرده است.
  • با کمک php7 میتوانید Type Declaration سخت تری برای توابع در نظر داشته باشید.
  • php7 اپراتورهای جدیدی را به کار گرفته است مانند <=>

 

php 7 بهتر است یا ورژن‌های قبلی؟

مسلما PHP7 کامل‌ترین ورژن پی اچ پی هست که ارائه شده است و امکانات آن از دیگر برادرهای خود بیشتر است ولی به طور کلی انتخاب ورژن PHP بستگی به کاری که شما دارید داشته و باید مطابق با آن پیش بروید.

1190

سبد خرید

سبد خرید شما خالی است.