امکانات جدید و هیجان انگیز PHP 7.4

نسخه جدید PHP یعنی PHP 7.4 در تاریخ ۲۸ نوامبر ۲۰۱۹ (۷ آذر ۹۸) منتشر شد.

در این نسخه نیز سرعت و عملکرد آن افزایش یافته و پر از ویژگی های داغ و هیجان انگیز میباشد.

در این مقاله مهترین ویژگی های ورژن ۷.۴ را بررسی خواهیم کرد.

 

۱. Arrow Functions

 

اگه با جاوااسکریپت (ES6) کار کرده باشید، این ویژگی برای شما آشنا هست.

با Arrow Function کدهای ما کوتاه تر و خواناتر میشه. مثال زیر رو ببینید که $math اولی با توابع بی‌نام نوشته شده و دومی با Arrow Function:

// Anonymous function
$math = function($x) use ($y, $z) {
    return $x + ($y * $z);
}
 
// Arrow function
$math = fn($x) => $x + ($y * $z);

 

 

۲. Spread Operator (آرایه‌ها)

 

این ویژگی باز هم برای برنامه‌نویس‌های جاوااسکریپت آشنا هست.

قبلا وقتی می‌خواستیم دو تا آرایه رو با هم یکی (مرج) کنیم از تابع array_merge استفاده می‌کردیم. اما با با ویژگی Spread Operator که فقط استفاده از سه نقطه هست می‌تونیم این کار رو انجام بدیم:

$one = ['a', 'b', 'c'];
$two = ['x', 'y', 'z'];
 
$total = [...$one, ...$two]; // ['a', 'b', 'c', 'x', 'y', 'z'];

 

البته این ویژگی توی ورژن‌های قبل، برای آرگومان توابع وجود داشت:

function add(...$numbers) {
    // ...
}
 
add(1, 2);
add(1, 2, 3, 4);

دقت کنید که این ویژگی برای آرایه‌های key/value (آرایه‌هایی که key اونها رشته‌ای هست) کار نمیکنه.

 

۳. Typed Properties

 

PHP 7 با ارائه دادن یک سری از ویژگی‌های یک زبان Strong Typed منتشر شد. مثل مشخص کردن نوع ورودی و خروجی یک تابع.

اینکار باعث شد تا حجم کدنویسی خیلی کمتر و کدها خواناتر بشه. اما PHP هنوز با یک زبان Strong Typed هنوز فاصله داشت.

برای مثال نمیشد برای پراپرتی‌ها و متدهای یک کلاس نوع تعریف کرد و حالا با اومدن ورژن 7.4 PHP می‌تونیم برای پراپرتی‌های یک کلاس، نوع تعریف کنیم:

class Tasar
{
    public int $number;
    public string $string;
 
    protected ClassName $classType;
    private ?ClassName $nullableClassType;
 
    public static Iterable $staticProp;
 
    var bool $flag;
 
    public string $str = "foo";
    public ?string $nullableStr = null;
 
    public float $x, $y;
 
}

 

 

۴. عملگر Null coalescing assignment (=??)

 

توی 7.4 PHP یک ویژگی جالب معرفی شد که نسخه کوتاه شده‌ی یک short if رو باز هم کوتاه تر کرد. ابتدا این if معمولی رو درنظر بگیرید:

if (! isset($array['key'])) {
    $array['key'] = 'new-value';
}
 
// or
 
$array['key'] = $array['key'] ?? 'new-value';

اگه از عملگر =?? که توی ورژن 7.4 معرفی شده استفاده کنیم، می‌تونیم این if رو کوتاه‌تر بنویسیم:

$array['key'] ??= 'new-value';

 

۵. Preloading

 

ترجمه اون میشه از پیش بارگزاری. این یکی از مهمترین ویژگی‌هایی هست که باعث افزایش چشمگیر توی سرعت و عملکرد برنامه میشه.

همونطور که می‌دونیم برنامه‌های ما متشکل از تعداد زیادی فایل (کلاس‌ها، توابع و …) هست. اگه از فریم‌ورک هایی مثل لاراول و سیمفونی استفاده کنیم تعداد این فایل‌ها خیلی زیاد هست.

در حالت عادی هر زمانی که یک درخواست به سمت سرور میاد، برای پردازش این درخواست، همه‌ی این فایل‌ها باید از هارددیسک خونده و سپس تفسیر بشن.

یعنی یک کار تکراری برای هر درخواست که باعث میشه زمان افزایش و سرعت کاهش پیدا کنه.

با Preloading، وقتی سرور بالا میاد و قبل از اینکه کدهای ما اجرا بشن، همه‌ی فایل‌های مورد نیاز فقط یک بار کامپایل و برای درخواست‌های بعدی، توی حافظه نگهداری میشن.

با اضافه شدن این ویژگی، میزان مصرف رم چندین برابر پایین میاد و به همون اندازه سرعت بالا میره. این کار با افزونه OPcache و فعال کردن opcache.preload توی فایل php.ini صورت می‌گیره.

 

۶. بهبود تابع strip_tags

 

همونطور که می‌دونیم، این تابع که برای حذف کردن تگ‌های HTML بکار میره.

پارامتر دوم این تابع برای مشخص کردن تگ‌هایی هست که می‌خوایم نادیده گرفته بشه. قبل از PHP 7.4 این تابع رو بصورت زیر می‌نوشتیم:

$stripped = strip_tags($str, '<a><p>');

اما توی PHP 7.4 می‌تونیم برای پارامتر دوم این تابع، یک آرایه متشکل از اسم تگ‌ها رو پاس بدیم:

$stripped = strip_tags($str, ['a', 'p']);

 

 

توی  این مقاله سعی کردیم مهمترین ویژگی های اضافه شده به نسخه جدید PHP رو براتون توضیح بدیم،

برای آگاهی از تمامی تغییرات میتونین به اینجا مراجعه کنید.

درباره میرمحمد حسینی

برنامه نویس وب، متخصص php ،laravel برنامه نویس اندورید، ruby, AVR طراح بردهای الکترونیکی و طراح گرافیک

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *