قابلیت های جدید پی اچ پی 8.4

قابلیت های جدید پی اچ پی 8.4

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

فانکشن های جدید پی اچ پی 8.4 برای کار با آرایه

ورژن پی اچ پی 8.4 شامل فاکشن های جدید برای جستجو در آرایه ها می شود که به شرح زیر هستند

  • array_find
  • array_find_key
  • array_any
  • array_all

فانکشن array_find در php 8.4

فانکشن array_find روی تمام آیتم های ارایه حرکت میکند و مقدار اولین آیتمی که خروجی کالبک آن true باشد را بر میگرداند:

<?php

$array = [
  'one' => 'reza',
  'two' => 'hamid',
  'tree' => 'mohammad',
];

$result = array_find($array, function(string $value) {
    return strlen($value) > 4;
});

// $result: hamid

فانکشن array_find_key در پی اچ پی 8.4

فانکشن array_find_key روی تمام آیتم های ارایه حرکت میکند و کلید اولین آیتمی که خروجی کالبک آن true باشد را بر می گرداند، در صورتی که شرط کالبک برای هیچکدام از آیتم ها درست نباشد مقدار null برگردانده می شود.

<?php

$array = [
  'one' => 'reza',
  'two' => 'hamid',
  'tree' => 'mohammad',
];

$result = array_find_key($array, function($value, $key) {
    return $value == 'reza';
});
// $result: one

فانکشن array_any و array_all در پی اچ پی 8.4

فانکش array_any تمام آیتم های آرایه را بررسی می کند و اگر شرط کالبک هر کدوم از آیتم ها true باشد مقدار true بر میگردد، در واقع یک شرط را برای آیتم های آرایه بررسی می کند و اگر حداقل یک شرط برقرار باشد true برمی گرداند.

<?php

$array = [
  'one' => 'reza',
  'two' => 'hamid',
  'tree' => 'mohammad',
];

$hasMohammad = array_any($array, function($value) {
    return $value == 'mohammad';
});
// $hasMohammad: true

فانکشن array_all نیز یک شرط را برای تمام آیتم های آرایه بررسی می کند ولی برعکس فانکشن array_any باید شرط برای تمام آیتم ها برقرار باشد تا true برگردد اگر حتی یک مورد شرط برقرار نباشد false بر میگردد.

<?php

$array = [
  'one' => 'reza',
  'two' => 'hamid',
  'tree' => 'mohammad',
];


$isValid = array_all($array, function($value) {
    return strlen($value) <= 5;
});

// $isValid: false

ویژگی Property Hook در PHP 8.4

پراپرتی هوک ها امکان تغییر رفتار ویژگی را هنگام خواندن و نوشتن محیا می کند، این قابلیت دو نوع روش نوشتن تک خطی و چند خطی را پشتیبانی می کند:

<?php

class Employee {
      private boolean $changed = false;

     public function __construct(
       private string $firstName,
       private string $lastName;
     ){}

  public string $fullName {
      // بازنویسی رفتار خواندن مقدار 
      // به صورت تک خطی نوشتیم
      get => $this->firstName . ' ' . $this->lastName;

      // باز نویسی رفتار نوشتن
      // به صورت چند خطی نوشتیم
      set {
           [$this->firstName, $this->lastName] = explode(' ', $value, 2);
            $this->changed = true;
      }
  }
  
}

ایجاد کلاس بدون استفاده از پرانتز در php 8.4

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

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

<?php

(new Request())->withMethod('GET')->withUri('/hello-world');

در نسخه 8.4 پرانتز ها دیگر اجباری نیست و به این شکل قابل نوشتن است:

<?php

$request = new Request()->withMethod('GET')->withUri('/hello-world');

تغییرات جزیی بیشتری در این ورژن داشتیم که به مرور مقاله به روز رسانی می شود.

موفق باشید.

پی اچ پی
قابلیت های جدید پی اچ پی 8.4

قابلیت های جدید پی اچ پی 8.4

پی اچ پی 8.4 با فانکشن های جدید برای کار با آرایه ها و معرفی هوک برای ویژگی های کلاس منتشر شد

رضا مسعودی رضا مسعودی
1403-09-02