PHP 8.3: নতুন ফিচার (RFC সহ) এবং রিলিজ ডেট
পিএইচপি একটি ওপেন-সোর্স প্রজেক্ট। অল্প কয়েক মিনিট ঘাঁটাঘাঁটি করলেই জেনে যাওয়া যায় পরের ভার্সনে কী আসছে।
নিচে আপনি একটা সংক্ষিপ্ত তালিকায় ধারণা পেয়ে যাবেন- নতুন কী কী এসেছে, এবং তাদের স্যাম্পল কোড কেমন।
পিএইচপি 8.৩ কবে আসবে?
প্রিপারেশন টাস্ক লিস্ট অনুযায়ী, পিএইচপি ৮.৩ আসবে নভেম্বর ২৩, ২০২৩ এ– তিনটি আলফা, তিনটি, বেটা এবং ছয়টি রিলিজ ক্যান্ডিডেটের পরে।
তারিখ | রিলিজ |
June 8, 2023 | Alpha 1 |
June 22, 2023 | Alpha 2 |
July 6, 2023 | Alpha 3 |
July 18, 2023 | Feature freeze |
July 20, 2023 | Beta 1 |
August 03, 2023 | Beta 2 |
August 17, 2023 | Beta 3 |
August 31, 2023 | RC 1 |
September 14, 2023 | RC 2 |
September 28, 2023 | RC 3 |
October 12, 2023 | RC 4 |
October 26, 2023 | RC 5 |
November 9, 2023 | RC 6 |
November 23, 2023 | GA |
নতুন কী আছে পিএইচপি ৮.৩ এ: নতুন ফিচার এবং পরিবর্তনসমূহ
json_validate()
JSON স্ট্রিং যাচাই করতে json_decode() এর পরিবর্তে এখন আপনি json_validate() ব্যবহার করতে পারেন। আরএফসি অনুযায়ী, এতে কম রিসোর্স ব্যবহৃত হয়।
json_validate('{ "foo": "bar", }');
// Syntax error
echo json_last_error_msg();
দেখতে পাচ্ছেন, এখানে json_validate() একটা boolean রিটার্ন করে, আর আপনি এই এরোর ম্যাসেজটি json_last_error() অথবা json_last_error_msg() দিয়ে এনে আরও ডিটেইলস পেতে পারেন।
উন্নত unserialize() এরোর হ্যান্ডলিং
পিএইচপি ৮.৩ এর রয়েছে আনসিরিয়ালাইজিংএর সময়ে উন্নত এরোর হ্যান্ডলিং সুবিধা।
আমি কাস্টম আনসিরিয়ালাইজেশনের ব্যাপারে জ্ঞাত নই, তবে আমি আমার সর্বোচ্চ চেষ্টা করব কীভাবে এই আরএফসি কাজ করে এটা খুব সহজে বোঝাতে।
এতদিন আমাদের কাস্টম এরোর হ্যান্ডলারের মত ভয়ানক কোডের উপর ভরসা করে থাকতে হত, কিন্তু এখন সেখানে রয়েছে unserialize() ফাংশন।
try {
set_error_handler(static function ($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
});
$result = unserialize($serialized);
} catch (Throwable $e) {
// Unserialization failed. Catch block optional if the error should not be handled.
} finally {
restore_error_handler();
}
পিএইচপি ৮.৩ এ আমরা unserialize() মেথড ব্যবহার করে সরাসরি এরোর হ্যান্ডেল করতে পারব:
function unserialize(string $data): mixed
{
try {
//
} catch (Throwable $e) {
throw new UnserializationFailedException(previous: $e);
}
}
র্যান্ডমাইজার অ্যাডিশন (Randomizer Additions)
এই আরএফসি \Random\Randomizer এবং IntervalBoundary নামক একটি enum এ তিনটি নতুন মেথড যুক্ত করার সুবিধা প্রদান করে, যা নিচের মেথডগুলোর একটিতে ব্যবহৃত হয়:
final class Randomizer {
public function getBytesFromString(string $string, int $length) : string {}
public function nextFloat() : float {}
public function getFloat(float $min, float $max, IntervalBoundary $boundary = IntervalBoundary::ClosedOpen) : float {}
}
enum IntervalBoundary
{
case ClosedOpen;
case ClosedClosed;
case OpenClosed;
case OpenOpen;
}
ডায়নামিক ক্লাস কন্সট্যান্ট ফেচ (Dynamic class constant fetch)
এই আরএফসি ভ্যারিয়েবলের সাহায্যে ডায়নামিকভাবে ক্লাস কন্সট্যান্টদের অ্যাক্সেস করার সুবিধা দেয়।
এর মানে হচ্ছে একটা স্ট্যাটিক স্ট্রিং ভ্যালু দিয়ে ক্লাস কন্সট্যান্টদের অ্যাক্সেস (যেমন- ClassName::CONSTANT) করার পরিবর্তে আপনি কন্সট্যান্টের নাম সংবলিত একটি ভ্যারিয়েবল ব্যবহার করতে পারেন।
$constant = 'CONSTANT';
ClassName::{$constant}
এই পরিবর্তনের কারণে ডায়নামিকভাবে এবং প্রোগ্রামাটিকভাবে ক্লাস কন্সট্যান্ট অ্যাক্সেস করা সহজতর হবে।
আরও যথাযথ ডেট/টাইম এক্সেপশন
এই আরএফসির সাহায্যে পিএইচপিতে নির্দিষ্ট তারিখ ও সময়ের এক্সেপশন হ্যান্ডেল করা যায়।
বর্তমানে এখানে ওয়ার্নিং, এরোর অথবা একটা সাধারণ Exception রয়েছে যা ততটা নির্দিষ্ট নয়।
এখানে আলাদা আলাদা এরোরের জন্য আলাদা আলাদা এক্সেপশন থাকবে, যেমন ‘DateInvalidTimeZoneException’, ‘DateInvalidOperationException’, এবং ‘DateMalformedStringException’।
পিএইচপি ৮.৩ এর জন্য আজ এই পর্যন্তই।
আমি আসন্ন মাসগুলোতে গৃহীত নতুন আরএফসি নিয়ে রিপোর্ট করতে থাকব।