فقط واتساپ ۰۹۱۵۷۲۳۲۳۹۸

ویژگی های php 8 امکانات جدید نسخه 8 php

ویژگی های php 8

ویژگی های php 8 ، شامل بروزرسانی ها و رفع ایرادات نسخه های قبلی و یکسری قابلیت های جدید است که طرفداران این زبان برنامه نویسی را غافلگیر کرده است. در این ویدیو آموزشی قصد داریم پیرامون ویژگی های php 8 صحبت کنیم و مهم ترین آنها را بررسی کنیم.

 

Php 8 چیست؟

Php 8 چیست ؟ و چه مزیت هایی دارد؟ سوالی که شاید شما هم بعد از شنیدن مکرر این نام از زبان برنامه نویسان از خود پرسیده باشید. در پاسخ به این سوال باید بگوییم php 8 آخرین نسخه از زبان برنامه نویسی php است که در 26 نوامبر 2020 ارائه شد. برخی امکانات در این نسخه برای رفع ایرادات مهم نسخه های قبلی ارائه شده است. همچنین یکسری ویژگی های php 8  ، جدید هستند و امکانات جذابی را به این برنامه اضافه کرده اند. در ادامه به بررسی برخی از مهم ترین ویژگی های 8 php می پردازیم برای اینکه بهتر متوجه شوید که امکانات جدید php 8 چیست تا انتهای این مقاله با ما همراه باشید.

 

Union types

یکی از جذاب ترین ویژگی های php 8 ، قابلیت Union types است که به شما امکان می دهد که برای پارامتر ورودی یک تابع بیش از یک نوع داده را مشخص کنید. مثلا:

 

در قطعه کد بالا برای تابع foo پارامتر ورودی دارای دو نوع داده ای int و float است و این دو نوع را با علامت | از هم جدا می کنیم. همانطور که می دانید علامت | به معنی یا است. بنابراین یکی از این دو نوع قرار می گیرد.

نکته : توابع نوع void هیچ خروجی برنمی گرداند به همین خاطر برای آن از Union types استفاده نمی کنیم.

نکته : اگر داده خروجی را بخواهیم از نوع nullable باشد می توانیم از علامت ? یا null| استفاده کنیم. مانند مثال زیر:

 

کامپایلر jit

کامپایلر jit یکی دیگر از ویژگی های php 8 است که باعث بهبود عملکرد می شود. بطور خلاصه می توان گفت کامپایلر jit برپایه just in time است و بجای اینکه اول کدها را کامپایل کند و سپس اجرا کند، ابتدا کدها را اجرا کرده و سپس کامپایل می کند. با کمک این کامپایلر شما دیگر نیازی به مترجم نخواهید داشت. این مسئله باعث اجرای سریعتر کدها و بهبود کارایی می شود. اگرچه باید اشاره کنیم که این کامپایلر مستقیما تاثیری روی سرعت پروژه های php نخواهد گذاشت.

 

اپراتور null safe

اکنون می خواهیم در مورد یکی دیگر از ویژگی های php 8 بنام اپراتور null safe صحبت کنیم. در نظر بگیرید می خواهیم یک متد را صدا زده و بررسی کنیم که در صورتی که مقداری داخل آن بود از آن مقدار استفاده کند و اگر مقداری نداشت از null استفاده کند. مثال زیر چنین حالتی را نشان می دهد.

در این مثال در متد projects پروژه های کاربر داخل متغیر projects قرار داده شده است. در خط دوم مشخص کرده ایم که اگر plans از متغیر projects موجود بود، مقدار آن را درون sendplan قرار دهد در غیر اینصورت مقدار null را قرار دهد. حال می خواهیم این قطعه کد را با عملگر nullsafe بنویسیم فرم کد بصورت زیر خواهد بود:

 

 

Name argument

Name argument یا آرگومان های نامگذاری به ما کمک می کنند تا نام یک بدون در نظر گرفتن ترتیب پارامترهای تابع، با استفاده از نامشان آنها را مقداردهی کنیم. برای درک بهتر به مثال زیر توجه کنید:

همانطور که ملاحظه می کنید پارامترهای تابع foo، بصورت نامرتب مقداردهی شده اند.

 

attribute

صفت ها یا attribute ها برای یادداشت نویسی یا اضافه کردن داده های متا در کلاس استفاده می شوند. شیوه صفت دهی به روش مثال زیر را حتما بارها دیده اید.

 

از ویژگی های php 8 این است که می توان از RFC برای صفت ها استفاده کرد. در کدهای زیر نحوه استفاده از صفت ها بخوبی نشان داده شده است.

به شیوه کاربرد این صفت ها دقت کنید.

 

 

Match Expression در php

Match Expression در php نسخه بهبود یافته ای از switch است. تفاوت این دو در این است که در Match Expression بخاطر ساختاری آرایه ای، شما نیازی ندارید از break استفاده کنید. با یک مثال این دو کد را باهم مقایسه می کنیم:

دستور سوئیچ را قبلا در بخش آموزش switch بررسی کردیم و با آن آشنایی دارید. حال می خواهیم همین کد را با Match Expression در php بازنویسی کنیم.

با کمک دستور Match Expression در نسخه جدید php شما از نوشتن دستورات تکراری و اضافی دستور سوئیچ خلاص خواهید شد.

 

 

constructor در شی گرایی

مشکل تابع constructor در شی گرایی در این نسخه برطرف شده است. حال برای اینکه بفهمید این مشکل چیست به مثال زیر دقت کنید:

در این کد دو ویژگی با نام های currency و amount تعریف شده که با تابع constructor مقداردهی می شود. این دو ویژگی بعنوان آرگومانهای ورودی تابع قرار داده شده اند و در داخل تابع مقداردهی می شوند. حال آنکه می توان این کد را بصورت زیر خلاصه سازی کرد و از تکرار مجدد این آرگومانها پرهیز کرد.

 

 

بازگردانی مقادیر static

در نسخه جدید php برخلاف نسخه های قبلی، شما امکان بازگردانی یا return مقادیر استاتیک را نیز خواهید داشت. این ویژگی یک قابلیت کاربردی به شمار می رود. کد زیر یک مثال از این قابلیت را نشان می دهد:

 

نوع داده Mixed

یک نوع داده ای جدید است که می تواند انواع داده ای زیر را در خود جا دهد.

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

نکته : Mixed نوع داده null را نیز در خود دارد بنابراین نیازی نیست که متغیر خود را nullable تعریف کنید در غیر اینصورت با خطا مواجه می شوید.

 

 

ارث بری بوسیله private

در نسخه های قبلی بررسی های انجام شده روی متدهای public، protected و همچنین private به یک صورت انجام می شد و متدهای private نیز مطابق قوانین متدهای protectd , public اجرا می شد. این مسئله زمانی مشکل ساز بود که متدهای private در کلاس فرزندان در دسترس نیست. استفاده از RFC باعث تغییر این رفتار شده و بررسی های ارث بری در متد PRIVATE اجرا نمی شود.

 

 

Weak map

Weak map به مجموعه ای از داده ها (object) گفته می شود که ارجاع کلیدها بصورت ضعیفی انجام می شود. در نسخه جدید php یکسری کلاس weak map ساخته شده که در مواقعی که به هیچ شی ای ارجاع داده نشده بتوان آن کلیدها را حذف کرد. این کار باعث عملکرد بهتر و صرفه جویی در حافظه می شود.

نتیجه کد بصورت زیر است:

اگر شی obj را حذف کنیم کلید آن نیز بصورت اتوماتیک از weak map حذف می شود.

نتیجه نهایی بصورت زیر خواهد بود:

 

 

قابلیت class:: بر روی اشیا

قبلا در کلاس های اشیا از get_class, استفاده می شد. این دستور مشخص نمیکرد که این شی متعلق به کدام کلاس است. دستور class:: این قابلیت را دارد که کلاس را نیز مشخص کند. بطور مثال:

 

Non-capturing catches

در نسخه های قبلی php برای خطایابی کش باید exception داخل کش را در یک متغیر ذخیره می کردیم . حتی امکان داشت که این متغیر اصلا در جایی استفاده نشود. اما در نسخه جدید php ، نیازی به ذخیره متغیر نیست. کد زیر حالت اولیه این خطایابی را نشان می دهد:

نسخه اصلاح شده این کد بصورت زیر است:

این کد یک مشکل مهم دارد. در نسخه هشت برخلاف نسخه های قبلی باید حتما نوع کش را مشخص کنید در غیر اینصورت به خطا برخورد خواهید کرد. بنابراین کد بالا را می توان بصورت زیر اصلاح کرد:

در اینجا کش از نوع throwable تعریف شده است.

 

 

آخرین کاما در لیست پارامترها

در این نسخه می توانید پس از اخرین پارامتر در تابع نیز یک کاما قرار دهید اما در نسخه های قبلی شما این امکان را نداشتید.

 

این پست رو حتما ببین : آموزش html و css

 

Stringable interface

ویژگی های php 8 ، این امکان را به شما می دهد که با پیاده سازی تابع tostring__ در واسط ها یک تبدیل یا type hint انجام دهید. با اجرای این تابع در عمل tostring__ بصورت خودکار در بکگراند اجرا می شود. مثال:

 

 

str_contains

str_contains یک تابع برای بررسی وجود یک رشته در داخل رشته بزرگتر است که بجای تابع strpos استفاده می شود:

بجای این تابع می توان از str_contains استفاده کرد:

 

 

str_starts_with و str_ends_with

تابع str_starts_with برای بررسی این است که آیا رشته پارامتر اول با رشته پارامتر دوم شروع می شود یا خیر؟ تابع str_ends_with برعکس قبلی انتهای رشته را بررسی می کند.

 

 

fdiv

در ویژگی های php 8 تابع fdiv امکان تقسیم کردن یک عدد بر صفر را فراهم می کند و خروجی آن سه مقدار بی نهایت یا INF، منفی بی نهایت و NAN به معنی هیچ عددی است.

 

get_debug_type

این تابع نوع متغیر را نمایش می دهد. تفاوت این تابع با gettype در این است این تابع جزییات بیشتری را در مورد آرایه، کلاسها، اشیا و رشته ها نمایش می دهد.

 

get_resource_id

منابع یا resource ها جزو متغیرهای خاص در php محسوب می شوند که به منابع بیرونی اشاره میکنند. تابع get_resource_id کمک می کند تا عمل تغییر این منابع به int یا cast کردن آنها ساده تر انجام شود. قبلا این کار به اینصورت انجام می شد:

اما در نسخه 8 این کار بصورت زیر انجام می شود. مزیت تابع get_resource_id این است که نوع خروجی قبل از ارائه بررسی می شود و از نوع امن است.

 

این پست رو حتما ببین : ۷ سایت برتری که با PHP طراحی شده اند را بشناسید!

 

ویژگی های php 8 ، مانند نسخه های قبلی اصلاحات و بهبودهای زیادی در این زبان برنامه نویسی ایجاد کرده. تیم توسعه دهنده  php با هدف افزایش سرعت این زبان برنامه نویسی تغییرات هوشمندانه ای را در آن اعمال کرده و روزبه روز بر محبوبیت این زبان برنامه نویسی می افزاید. حتما این تغییرات شما را نیز ترغیب کرده که به سمت php8 حرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

ورود | ثبت نام
شماره موبایل یا ایمیل خود را وارد کنید
برگشت
کد تایید را وارد کنید
کد تایید برای شماره موبایل شما ارسال گردید
ارسال مجدد کد تا دیگر
برگشت
رمز عبور را وارد کنید
رمز عبور حساب کاربری خود را وارد کنید
برگشت
رمز عبور را وارد کنید
رمز عبور حساب کاربری خود را وارد کنید
برگشت
درخواست بازیابی رمز عبور
لطفاً پست الکترونیک یا موبایل خود را وارد نمایید
برگشت
کد تایید را وارد کنید
کد تایید برای شماره موبایل شما ارسال گردید
ارسال مجدد کد تا دیگر
ایمیل بازیابی ارسال شد!
لطفاً به صندوق الکترونیکی خود مراجعه کرده و بر روی لینک ارسال شده کلیک نمایید.
تغییر رمز عبور
یک رمز عبور برای اکانت خود تنظیم کنید
تغییر رمز با موفقیت انجام شد