PHP7 منتشر شد. همزمان با این انتشار حجم انبوهی از مقالات صفحات وب را با مضامینی همچون ” سرعت دو برابر” و ” کارآیی بیش تر بر روی پلتفرم های مختلف” و “بهبود کش سرور” و سایر عناوین مشابه پر کرد.
بلافاصله بعد از تست شدن توسط وب سایت ها و پلتفرها و نرم افزارهای مرجع نشانه های زیادی از تطابق وعده های داده شده توسط توسعه دهندگان php.net با نتایج آزمایش ها مشاهده شد.
با تمرکز بر روی هسته PHP و تغییرات در نحوه ساختار داخلی فرآیندها ، جداول هش (hash-table) کارایی بهتری یافته اند و ساختمان داده ها از اندازه بسیار کمتری برخوردار هستند. این تغییرات موجب شده است که میزان رم بسیار کمتری اشغال شود و در نتیجه سرعت عملیات ها افزایش یابد.
قبل از معرفی قابلیت های ایجاد شده در PHP7 لازم است چند نکته درباره تغییرات بوجود آمده بیان شود:
۱- ترتیب آرگومانهای توابع در نسخه جدید تغییری نمیکند.
۲- توابع به اشیاء اسکالر ( ()objects ->methods ) تبدیل نمیشوند و مطابق قبل خواهند بود.
۳- دستور goto که در php 5.3 اضافه شده است سرجای خود میماند!
مهمترین قابلیتهای جدید php7
۱- اعلان گروهی use
|
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\web\{
Controller,
NotFoundHttpException,
};
|
۲- اپراتورهای جدید ?? و <=>
|
$username = isset($_GET[‘user’]) ? $_GET[‘user’] : ‘guest’;
$username = $_GET[‘user’] ?? ‘guest’;
$compare = ($a < $b) ? –1 : ($a > $b ? 1 : 0);
$compare = $a <=> $b;
|
۳- امکان کچ کردن آنچه که باعث خطای مهلک میشود.
|
try {
hive();
} catch (EngineException $e){
echo ‘A Fatal Error caught’;
}
|
۴- وصل کردن توابع بدون اسم به یک آبجکت در runtime
|
class Foo{ public $bar;}
$foo = new Foo();
$foo->bar = 2;
$foobar = function($param) {echo $this->bar + $param;};
$foobar->call($foo, 4); /* 6 */
|
۵- همانند زبانهای متداول مثل C میتوانید برای توابع نوع مقدار بازگشتی تعریف کنید.
|
function hive(): int{
return [];
}
hive(); /* Fatal Error: Return value of hive() must be of the type integer, array returned
|
نکته: PHP اگر امکانش باشد داده خروجی را به نوعی که شما برای تابع تعریف کردهاید تبدیل میکند، البته اگر بشود.
۶- تعریف نوع دادههای ورودی در توابع
|
function hive(int $number, string $text, boolean $display)
|
۷- تعریف کلاسِ بدون اسم همانند توابع بدون اسم
|
new class() {}
|
در نهایت کامپایلر PHP7 کاملا بازنویسی شده و در قسمت مدیریت مموری هم بیشتر سعی شده با stack کار بشود تا heap، که طبیعتا سرعت پردازش سریعتر خواهد شد.
در نهایت تست انجام شده برای آشکار ساختن تغییرات ساختار داخلی PHP7 انجام شده که در تصاویر زیر قابل مشاهده است:
موارد اشاره شده در بالا، مواردی است که جزو قابلیتهای کلیدی به حساب میآیند.