بخش Vip سئو نود

بهترین فرصت برای یادگیری در قسمت Vip سئو نود هم اکنون برای دانشجوبان عزیز فراهم شده است

جزئیات بیشتر
آموزش یکبار برای همیشه

PHP 8.5 – چه چیزی در راه است

مقالات برنامه نویسی

تغییرات مهمی که در php 8.5 وجود دارد شامل چه گزینه‌هایی است ؟ احتمالا شما پس از ظهور نسخه 8.5 این مقاله را مطالعه کنید اما درهر صورت این امکانات را در نسخه 8.5 داریم ...

PHP 8.5 – چه چیزی در راه است

به عنوان توسعه‌دهندگان PHP، ما در طول سال‌های گذشته شاهد تحولی شگفت‌انگیز بوده‌ایم. از انقلاب عملکردی PHP 7 تا انواع union و attribute ها در PHP 8، هر نسخه ویژگی‌هایی را به همراه آورده که واقعاً زندگی روزمره کدنویسی ما را بهتر کرده‌اند. PHP 8.5 این روند را ادامه می‌دهد.

آن زمان‌ها را به یاد آورید که در حال نوشتن کد هستید و فکر می‌کنید “حتماً باید راه بهتری برای انجام این کار وجود داشته باشد”؟ یا وقتی با یک خطای مهلک مواجه می‌شوید و زمان زیادی را صرف می‌کنید تا بفهمید کدام تابع  واقعاً باعث ایجاد خطا شده است؟ PHP 8.5 بسیاری از این ناامیدی‌های روزمره را با افزودنی‌های متفکرانه‌ای برطرف می‌کند.

پیشنهادی : دوره آموزش php

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

در زیر موارد جدید که در php نسخه 8.5 اضافه شده است را بررسی می کنیم.

عملگر Pipe: زنجیره‌سازی توابع تمیزتر

شاید چشم‌گیرترین امکانات جدید، عملگر pipe جدید (|>) باشد که به شما امکان می‌دهد فراخوانی‌های تابع را به روشی خوانا‌تر از چپ به راست زنجیره کنید. اگر قبلاً با زبان‌هایی مانند F# یا Elixir کار کرده‌اید، این برایتان آشنا به نظر می‌رسد، و اگر نکرده‌اید، در شرف یک لذت هستید.

به جای فراخوانی‌های تابع عمیقاً تودرتو یا متغیرهای میانی متعدد، اکنون می‌توانید بنویسید:

$message = "Welcome Back"
    |> strtolower(...)
    |> trim(...)
    |> ucfirst(...);

// Result: "Welcome back"

این بسیار خوانا‌تر از روش تودرتوی سنتی است:

$message = ucfirst(trim(strtolower("Welcome Back")));

عملگر pipe با هر callable – توابع، متدها، closureها و حتی کلاس‌ها با __invoke کار می‌کند.

با این حال، عملگر pipe محدودیت‌های مهمی دارد که باید در نظر داشته باشید:

  • هر تابع در زنجیره باید فقط یک پارامتر اجباری بپذیرد (مقدار pipe شده به عنوان اولین آرگومان می‌شود)
  • توابع با پارامترهای ارجاعی پشتیبانی نمی‌شوند (زیرا هیچ متغیر واقعی برای ارجاع وجود ندارد)

اما کمی بیشتر از نسخه 8.5 توقع داریم …

دیباگ خطاهای بهتر با ردیابی پشته

PHP 8.5 در نهایت ردیابی پشته را به خطاها  اضافه می‌کند که دیباگ و خطایابی  را بسیار آسان‌تر می‌کند. قبلاً، وقتی اسکریپت شما به یک خطا مانند اتمام حافظه برخورد می‌کرد، فقط پیام خطا و شماره خط را می‌دیدید. اکنون شما پشته فراخوانی کامل را دریافت می‌کنید.

Fatal error: Allowed memory size exhausted in script.php on line 8
Stack trace:
#0 script.php(12): process_large_data()
#1 script.php(20): handle_request()
#2 {main}

این ویژگی توسط دستور INI جدید fatal_error_backtraces کنترل می‌شود و به طور پیش‌فرض فعال است.

توابع راحتی جدید آرایه

دو تابع ساده اما مفید به جعبه ابزار آرایه PHP می‌پیوندند و شکافی را پر می‌کنند که بسیاری از توسعه‌دهندگان سال‌ها با آن کار کرده‌اند. در حالی که PHP 7.3 به ما array_key_first() و array_key_last() داد تا کلیدها را بگیریم، گرفتن مقادیر واقعی نیاز به مراحل اضافی داشت.

$fruits = ['apple', 'banana', 'cherry'];
$first = array_first($fruits);  // 'apple'
$last = array_last($fruits);    // 'cherry'

// Works with associative arrays too
$scores = ['alice' => 95, 'bob' => 87, 'charlie' => 92];
$first_score = array_first($scores);  // 95
$last_score = array_last($scores);    // 92

قبل از PHP 8.5، گرفتن اولین مقدار از یک آرایه اغلب به معنای نوشتن reset($array) یا array_values($array)[0] بود، که هر دو ناشیانه به نظر می‌رسند و برای سایر توسعه‌دهندگان‌ای که کد شما را می‌خوانند بلافاصله واضح نیستند. توابع جدید هدف را کاملاً واضح می‌کنند.

یک نکته مهم: هر دو تابع برای آرایه‌های خالی null برمی‌گردانند، اما از آنجایی که null می‌تواند یک مقدار آرایه معتبر نیز باشد، ممکن است در برخی موارد به بررسی‌های اضافی نیاز داشته باشید:

$data = [null, 'second', 'third'];
$first = array_first($data);  // null (valid value)

$empty = [];
$first = array_first($empty); // null (empty array)

// If you need to distinguish between these cases
if (empty($data)) {
    // Array is actually empty
} elseif (array_first($data) === null) {
    // First value is null
}

اینها مکمل توابع موجود array_key_first() و array_key_last() از PHP 7.3 هستند و به شما دسترسی کامل به هر دو انتهای آرایه‌هایتان بدون هیچ ورزش ذهنی می‌دهند.

توابع درون‌بینی Handler

PHP 8.5 توابع get_error_handler() و get_exception_handler() را معرفی می‌کند تا handlerهای خطا و استثنای تنظیم شده فعلی را بازیابی کنند. این شکافی را پر می‌کند که در آن شما می‌توانستید handlerها را تنظیم و بازیابی کنید اما به راحتی نمی‌توانستید بررسی کنید که در حال حاضر چه چیزی فعال است:

set_error_handler('my_error_handler');
$current_handler = get_error_handler(); // Returns 'my_error_handler'

if (get_exception_handler() === null) {
    // No exception handler is currently set
    set_exception_handler('my_exception_handler');
}

ویژگی‌های بین‌المللی‌سازی

افزونه Intl چندین بهبود دریافت می‌کند. یک تابع جدید locale_is_right_to_left() (و متد متناظر Locale::isRightToLeft()) به تعیین اینکه آیا یک locale از اسکریپت‌های راست به چپ استفاده می‌کند کمک می‌کند:

locale_is_right_to_left('en-US');  // false
locale_is_right_to_left('ar-SA');  // true
locale_is_right_to_left('he-IL');  // true

همچنین یک کلاس جدید IntlListFormatter برای ایجاد فهرست‌های آگاه از locale وجود دارد:

$formatter = new IntlListFormatter('en-US');
echo $formatter->format(['Paris', 'London', 'Tokyo']);
// "Paris, London, and Tokyo"

$formatter = new IntlListFormatter('de-DE');
echo $formatter->format(['Paris', 'London', 'Tokyo']);
// "Paris, London und Tokyo"

بهبود cURL

برای کسانی که با cURL multi-handle کار می‌کنند، تابع جدید curl_multi_get_handles() تمام handleهای مرتبط با یک multi-handle را برمی‌گرداند و نیاز به ردیابی دستی آنها را از بین می‌برد:

$multi = curl_multi_init();

$handle1 = curl_init('https://api.example.com/users');

$handle2 = curl_init('https://api.example.com/posts');

curl_multi_add_handle($multi, $handle1);

curl_multi_add_handle($multi, $handle2);

$all_handles = curl_multi_get_handles($multi);

// Returns [$handle1, $handle2]

اما در ادامه …

چشم‌انداز آینده

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

بیشتر بخوانید : کاربرد آرایه ها در php چیست؟

این ویژگی‌ها در مجموع کد PHP را خوانا‌تر، دیباگ را آموزنده‌تر و توسعه بین‌المللی را در دسترس‌تر می‌کنند. در حالی که هیچ‌کدام به طور جداگانه انقلابی نیستند، اما با هم نشان‌دهنده بهبودهای معنادار کیفیت زندگی برای توسعه‌دهندگان PHP در سراسر جهان هستند.

من شخصاً نمی‌توانم منتظر بمانم تا زمانی که PHP 8.5 منتشر شد، این ویژگی‌ها را امتحان کنم! تا آن زمان، به ساختن نرم‌افزارهای عالی ادامه دهید!

فیروز بیگلری

فیروز بیگلری ، 10 سال است که در زمینه برنامه نویسی وب سایت و همچنین سیستم های عامل فعالیت می کنم . متخصص وردپرس ، PHP کار ، علاقمند به فرانت اند ، تولید محتوا و سئو

نظرات : 0 بازدید : 46 مطالعه : 8 دقیقه
اشتراک گذاری محتوا

نقشه راه فرانت

اگر قصد دارید تا یک طراح ماهر باشید ، ما درست ترین مسیر را برای شما فراهم کردیم و فقط کافیست همراه ما باشید

نقشه راه وردپرس

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

شاید این مطالب نیز برای شما جالب باشد
از این شاخه به آن شاخه پریدن در یادگیری برنامه نویسی !!
مطالعه : 10 دقیقه 1
امید قدیمی امید قدیمی
۱۴۰۴-۰۱-۰۳
آموزش ثابت در PHP
مطالعه : 11 دقیقه 1
امید قدیمی امید قدیمی
۱۴۰۳-۱۰-۲۲
راهنمای خرید کامپیوتر و لپ تاپ برای برنامه نویسی
مطالعه : 16 دقیقه 2
امید قدیمی امید قدیمی
۱۴۰۱-۱۱-۱۲
نظرات و پرسش
توجه کامنت های انگلیسی تایید نخواهند شد در صورت داشتن مشکل ، قبل از ارسال دیدگاه نظرات سایر دوستان را نیز مطالعه فرمائید توجه داشته باشید که دیدگاه یا پرسش صحیح شما کمک شایانی به سایر علاقمندان به این مطلب یا محصول خواهد داشت
اشتراک دیدگاه تکمیل تمامی فیلدها الزامی است
captcha

آموزش های رایگان بیشتر در آپارات و یوتیوب سئو نود
کانال آپارات سئو نود چنل یوتیوب سئو نود