همانطور که میدانیم PHP 8.2 قرار است 24 نوامبر منتشر شود. ما در این مطلب قصد داریم برخی از ویژگی های جدید این نسخه را با همدیگر مرور میکنیم. پس با ما همراه باشید
در php 8.1 با متغیر فقط خواندنی آشنا شدیم، توابعی که فقط یک بار مقدار دهی اولیه می شوند و پس از آن قابل تغییر نمی باشند.
در php 8.2 این قابلیت برای کلاس ها افزده شده، کلاس های Read-only کلاس هایی هستند که تمام ویژگی های آنها بصورت Read-only می شود.
قطعه کد زیر را ببینید، نمونه بالا یک کلاس read-only هست که با کد پایین برابر هست
توجه داشته باشید که فقط در صورتی میتوانید از کلاسهای فقط خواندنی تمدید کنید که کلاس فرزند نیز فقط خواندنی باشد.
در php 8.1 با nuion types کار میکرد به این صورت که شما می توانستید بگوید نوع ورودی یک تابع می تواند string|null|object یا ... باشد.
در php 8.2 با intersection types آشنا خواهیم شد. intersection types به شما می گوید نوع یک داده باید برای نمونه از نوع A و B باشد.
نمونه کد زیر را ببینید:
Dynamic properties در نسخه 8.2 پی اچ پی منسوخ شده اند و در php 9.0 یک Exception ایجاد خواهند کرد.
کد بالا یک خطا ایجاد خواهد کرد البته بیاد داشته باشید شما می توانید با استفاده از __set و __get همچنان از این قابلیت استفاده کنید. کد زیر به درستی کار خواهد کرد:
در این نسخه php ما میتوانید از ثوابت در trait ها استفاده کنیم:
و شما می توانید از طریق کلاسی که از آن trait استفاده کرده است به آن دسترسی داشته باشید. برای نمونه شما می توانید به CONSTANT در کلاس زیر که trait Foo را فراخوانی کرده است دسترسی داشته باشد:
همانطور که می دانیم هنگام ایجاد خطا در php یک پیغام برای برنامه نویس نمایش داده خواهد شد که دربرگیرنده محل و اطلاعات خطا می باشد. با این حال ممکن است این خطا حاوی اطلاعات حساسی مانند اطلاعات کاربری یا اطلاعات اتصال به دیتابیس باشد.
در php 8.2 یک قابلیت جدید اضافه شده است بنام "sensitive parameters"، درصورتی که شما یک متغییر را با این قابلیت علامت گذاری کرده باشید، در هنگام بروز خطا در آن محل دیگر اطلاعات آن در خطای نمایش داده شده فهرست نخواهد شد. و به این صورت می تواند نسبت به حفظ اطلاعات حساس امنیت بیشتری را احساس کرد.
کد زیر را ببینید:
در صورت بروز خطا در کد بالا، متن زیر نمایش داده خواهد شد:
Fatal error: Uncaught Exception: Error in login.php:8 Stack trace: #0 login.php(11): login('root', Object(SensitiveParameterValue)) #1 {main} thrown in login.php on line 8
همانطور که میبینید اطلاعات مربوط به $password که بصورت SensitiveParameter نشانه گذاری شده است با Object(SensitiveParameterValue) نمایش داده خواهد شد.
در این مطلب با برخی از قابلیت های php 8.2 آشنا شدیم. سعی خواهم کرد مطالب دیگری در این بار منتشر کنم و قابلیت های جدید این نسخه را بهتر برای شما معرفی کنم.
در صورتی که سوالی دارید یا نظری در مورد این مطلب دارید از قسمت نظرات برای ما ارسال کنید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *
هنوز برای این مطلب نظری ارسال نشده است!