۵ قابلیت جدید و مفید PHP 8 – راهنمای کاربردی


همچنان که شاید اطلاع داشته باشید نسخه جدید زبان برنامهنویسی PHP به زودی منتشر خواهد شد. ما در مجله فرادرس برخی مقالات را در این خصوص تهیه و منتشر کردهایم و به معرفی امکانات نسخه جدید این زبان پرداختهایم. در مقاله حاضر قصد داریم 5 قابلیت جدید و مفید PHP 8 را که احتمالاً اهمیت بیشتری دارند معرفی کنیم.
عملگر Null safe
در PHP 7 یک عملگر null coalescing وجود داشت که از بروز بسیاری از خطاهای Undefined index جلوگیری میکرد و موجب میشد که تعیین مقادیر پیشفرض آسان شود، اما این عملگر روی فراخوانیهای متد کار نمیکرد. این موضوع به طور خاص در مورد فراخوانیهای زنجیرهای متد مشکلساز میشد.
در نسخه جدید این زبان عملگر Null safe معرفی شده است که با استفاده از آن میتوانیم کاری مانند زیر انجام دهیم:
1<?php
2
3$value = $user->getAddress()?->getCountry();
با استفاده از این عملگر هیچ گاه دیگر با خطای پرتکرار زیر مواجه نمیشویم:
Call to a member function getCountry() on null
- مقاله پیشنهادی: Null چیست ؟ — تهی در برنامه نویسی به زبان ساده
تابع جدید str_contains
این تابع چیزی بود که مدتهای مدیدی بود انتظارش را میکشیدیم. پس از آن که به str_contains در لاراول عادت کردیم، حتی در فریمورکهای دیگر مانند سیمفونی نیز ناخودآگاه از آن استفاده میکردیم که البته موجب بروز خطای Call to undefined function str_contains میشود و باید به جای آن از strops استفاده میکردیم.
1<?php
2
3// Using strpos
4$contains = \strpos('Please use str_contains', 'str_contains') !== false;
5
6// Using the new str_contains
7$contains = \str_contains('Please use str_contains', 'str_contains');
تابعهای جدید str_starts_with و str_ends_with
موضوعی که در خصوص تابع فوق اشاره کردیم را در مورد دو تابع str_starts_with و str_ends_with نیز میتوانیم تکرار کنیم. این توابع جدید کاربردهای مفید زیادی دارند. با این که همین منطق را میتوان با استفاده از strops پیادهسازی کرد، اما داشتن فراخوانیهای تابع به صورت خوانا همیشه بهتر است.
ارتقای مشخصه سازنده
ما پیشتر در مجله فرادرس در یک مطلب مفصل (+) به بررسی این قابلیت مفید PHP 8 پرداختهایم. اگر با تایپ اسکریپت آشنا باشید، احتمالاً از این ساختار قبلاً استفاده کردهاید. اینک این قابلیت در PHP نیز پیادهسازی شده است:
1<?php
2
3// NOW
4class User {
5 public function __construct(
6 public string $email,
7 public string $name,
8 public string $password,
9 ) {}
10}
کد فوق اختصاری برای کد زیر محسوب میشود:
1<?php
2
3class Userr {
4 public string $email;
5 public string $name;
6 public string $passwor;
7
8 public function __construct(
9 string $email,
10 string $name,
11 string $password,
12 ) {
13 $this->email = $email;
14 $this->name = $name;
15 $this->password = $password;
16 }
17}
این قابلیت احتمالاً یکی از بهترین و مفیدترین امکاناتی است که به زبان برنامهنویسی PHP اضافه شده است. با بهرهگیری از این امکان جدید میتوانیم زمان زیادی را که باید صرف اعلان مشخصهها به طور تکراری علاوه بر تعریف در سازنده میشد، صرفهجویی کنیم.
آرگومانهای نامدار
این قابلیت جدید نیز بسیار مفید است. آرگومان نامدار (+) به طور خاص در مواردی که آرگومانهای تهیپذیر زیادی داشته باشیم، برای ما مفید خواهد بود.
در بخش زیر دو قطعه کد قبل و پس از استفاده از آرگومان نامدار را میبینید:
1<?php
2
3function aLotOfNullables(int $a, ?int $b = null, ?int $c = null, ?int $d = null) {}
4
5// BEFORE
6aLotOfNullables(1, null, null, 100);
7
8// WITH NAMED ARGUMENTS
9aLotOfNullables(a: 1, d:100);
توجه کنید که این قابلیت اختصاص به تابعها ندارد و از آرگومانهای نامدار میتوان در سازندهها و تابعهای خود PHP نیز بهره گرفت.
کامپایلر JIT
در ابتدای این مقاله اشاره کردیم که قصد داریم 5 قابلیت جدید و مفید PHP 8 را معرفی کنیم، اما این قابلیت ششم آنچنان مهم است که ارزش اندکی صرف وقت بیشتر از سوی شما را دارد. این قابلیت موجب ارتقای عملکرد چشمگیری نسبت به PHP 7 میشود. البته برای تست عملی کامپایلر JIT باید منتظر انتشار رسمی نسخه هشتم زبان برنامهنویسی PHP بمانیم.
سخن پایانی
در این مقاله به معرفی 5 قابلیت جدید و مفید PHP 8 یعنی جدیدترین نسخه از زبان برنامهنویسی PHP پرداختیم. PHP 8 قابلیتهای مفید و جدید زیادی را معرفی کرده است که اگر میخواهید با همه آنها آشنا شوید، پیشنهاد میکنیم مطلب زیر را مطالعه کنید:
امیدواریم این مطلب مختصر نیز مورد توجه شما قرار گرفته باشد.