Anophel-آنوفل ویژگی های جدید PHP8.2

ویژگی های جدید PHP8.2

انتشار:
1
0

PHP  جزو زبان های خاصی می باشد که با هر آپدیت جدید تکامل پیدا می کند و ویژگی های بسیار زیادی به آن اضافه می شود. برای مثال PHP با انتشار PHP7 در دسامبر 2015  نسبت به ورژن های قبلی خود بسیار بروز شد و عملکرد آن حدود 150% افزایش یافت. و با انتشار PHP8 در نوامبر 2020 ثابت کرد که یک زبان بالغ و مدرنی می باشد. 

PHP8.2 در نوامبر 24 سال 2022 انتشار یافت و این ورژن ویژگی های بسیار کاربردی به PHP اضافه کرد که در ادامه به تک تک این ویژگی ها خواهیم پرداخت؛ با ما همراه باشد.

 

مروری بر ورژن های قبلی PHP

قبل از اینکه به ویژگی های PHP8.2 بپردازیم، یک مرور کلی از ورژن های قبلی این زبان باهم داشته باشیم.

 

تغییرات عمده PHP7 شامل:

  1. 1.سرعت و کارایی آن بیشتر شد.
  2. 2.اضافه شدن یک سری عملگر های جدید
  3. 3.نمایش بهتر خطا ها و اثتسناها(Exception) و اضافه شدن Engine Exception جهت مدیریت آن
  4. 4.حذف برخی از ویژگی های از رده خارج شده در نسخه های قبلی و…

 

تغییرات عمده PHP8 نیز شامل :

  1. 1.Union Types مجموعه ای از نوع داده 
  2. 2.کامپایلر JIT
  3. 3.اپراتور Nullsafe
  4. 4.Match Expression و …

 

طبق ویژگی هایی که در نسخه های قبلی PHP دیدم برویم سراغ PHP8.2 :

 

1.کلاس های فقط خواندنی ( Readonly classes):

این ویژگی در PHP8 اضافه شده بود که در نسخه جدید این ویژگی گسترش پیدا کرده است.این ویژگی به این گونه می باشد که تمام ویژگی های کلاس فقط خواندنی می 

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

 

readonly class BlogData
{
    public string $title;

    public Status $status;

    public function __construct(string $title, Status $status)
    {
        $this->title = $title;
        $this->status = $status;
    }
}

2.Disjuncative Normal Form(DNF) Types :

این ویژگی به ما اجازه می دهد که انواع اتحاد و تقاطع را با هم ترکیب کنیم یا بهتر بگم یک روش استاندارد برای سازماندهی عبارت های بولین می باشد. برای مثال به کد زیر نگاه کنید:

class Foo {
    public function bar((A&B)|null $entity) {
        return $entity;
    }
}

3.نوع داده های Null و False و True را مستقل کنید:

زمانی که یک خطا رخ می دهد نوع بازگشتی false به صورت یک نوع داده مستقل در دسترس خواهد بود.  برای مثال به تکه کد زیر توجه کنید:

class Falsy
{
    public function alwaysFalse(): false { /* ... */ *}

    public function alwaysTrue(): true { /* ... */ *}

    public function alwaysNull(): null { /* ... */ *}
}

 

این مورد برای نوع داده true و null نیز صدق می کند که در تکه کد بالا مشاهده می شود.

4.افزونه جدید Random جهت تولید اعداد تصادفی:

یک API شی گرا جهت تولید اعداد تصادفی می باشد.و با استفاده از یک الگوریتم جدید به اسم Mersenne Twister که شی گرا می باشد به شما این اجازه را می دهد که از الگوریتم های مهم جهت تولید اعداد تصادفی از آن استفاده کنید. به تکه کد زیر یک نگاه کنید : 

use Random\Engine\Xoshiro256StarStar;
use Random\Randomizer;

$blueprintRng = new Xoshiro256StarStar(
    hash('sha256', "Example seed that is converted to a 256 Bit string via SHA-256", true)
);

$fibers = [];
for ($i = 0; $i < 8; $i++) {
    $fiberRng = clone $blueprintRng;
    // Xoshiro256**'s 'jump()' method moves the blueprint ahead 2**128 steps, as if calling
    // 'generate()' 2**128 times, giving the Fiber 2**128 unique values without needing to reseed.
    $blueprintRng->jump();

    $fibers[] = new Fiber(function () use ($fiberRng, $i): void {
        $randomizer = new Randomizer($fiberRng);

        echo "{$i}: " . $randomizer->getInt(0, 100), PHP_EOL;
    });
}

// The randomizer will use a CSPRNG by default.
$randomizer = new Randomizer();

// Even though the fibers execute in a random order, they will print the same value
// each time, because each has its own unique instance of the RNG.
$fibers = $randomizer->shuffleArray($fibers);
foreach ($fibers as $fiber) {
    $fiber->start();
}

5.ثابت ها در کلاس trait :

این ویژگی را این گونه تعریف کنم برای شما که شما در حالت کلی نمی توانید با استفاده از اسم کلاسtrait به ثابت های آن کلاس دسترسی پیدا کنیدولی با استفاده از این ویژگی می توانید از طریق کلاسی که از این trait استفاده می کند،به ثابت های آن دسترسی پیدا کنید. برای مثال به کد زیر نگاه کنید:

trait Foo
{
    public const CONSTANT = 1;
}

class Bar
{
    use Foo;
}

var_dump(Bar::CONSTANT); // Result : 1
var_dump(Foo::CONSTANT); // Result : Error

6.خصوصیات دینامیک را منسوخ کنید(Deprecate dynamic properties) :

بر اساس این ویژگی برای ایجادخصوصیات پویا برای جلوگیری از اشتباهات و اشتباهات املایی منسوخ شده است.و در نتیجه یک خطای Exception ایجاد خواهد شد اما مجیک متد های __set و __get بدون هیچ تغییری می توانید از آن استفاده کنید و نگران نباشید زیرا تاثیری بر آن ها ندارد، به تکه کد زیر نگاه کنید:

// in php <8.2
class User
{
    public $name;
}

$user = new User();
$user->last_name = 'Doe';

$user = new stdClass();
$user->last_name = 'Doe';
//in php8.2

class User
{
    public $name;
}

$user = new User();
$user->last_name = 'Doe'; // Deprecated notice

$user = new stdClass();
$user->last_name = 'Doe'; // Still allowed

 

دیدید که درPHP8.2 چه ویژگی های زیبایی اضافه شده است البته ناگفته نماند که موارد گفته شده فقط تکه کوچکی از ویژگی های جدید بود، برای مثال کلاس ها و توابع جدیدی به PHP اضافه شده است که همه درلینک زیر قرار دارد. 

 

اینجا

#PHP#پی_اچ_پی#PHP8.2
نظرات ارزشمند شما :

بسیار عالی

  • Reply