Codoloper

آموزش برنامه‌نویسی به فارسی

یاد بگیر، پیشرفت کن، بساز.

منبع آموزشی برنامه‌نویسی به زبان فارسی - مستندات، دوره‌ها و مطالب کاربردی برای همه سطوح.

داکیومنت ها:

CSSاچ تی ام البیشتر
1// برنامه‌نویسی به فارسی
2import { learn } from 'codoloper'
3
4const developer = learn({
5"lang": "فارسی"
6"level": "همه سطوح"
7free: true
8})
100+
صفحه مستندات
3+
زبان ها / فریمورک ها
رایگان
دسترسی کامل
چرا کدلپر؟

ارزش‌های ما

یادگیری برنامه‌نویسی نباید پیچیده باشد - ما مسیر را ساده می‌کنیم.

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

مستندات ترجمه‌شده

مستندات مهم‌ترین تکنولوژی‌ها، به فارسی روان.

نوشته‌ها

بلاگ

تازه‌ترین مطالب آموزشی و خبرهای مرتبط.

PHP 8 منتشر شده - چه چیزای جدیدی داره  نوشته شده توسط عرفان دهقانی

PHP 8 منتشر شده - چه چیزای جدیدی داره

PHP 8 چه چیز جدیدی دارد؟ سفری به مهم‌ترین تحولات این نسخه

PHP 8 در نوامبر 2020 منتشر شد و بدون شک یکی از بزرگ‌ترین به‌روزرسانی‌های تاریخ این زبان است. این نسخه مملو از ویژگی‌های جدید، بهبود کارایی و تغییرات ساختاری است که کدنویسی را لذت‌بخش‌تر، خوانایی کدها را بیشتر و اجرای برنامه‌ها را سریع‌تر می‌کند.

در ادامه، مهم‌ترین قابلیت‌های PHP 8 را با مثال بررسی می‌کنیم.


۱. کامپایلر JIT (Just-In-Time)

شاید مهم‌ترین تغییر فنی در PHP 8، افزوده شدن کامپایلر JIT باشد. در نسخه‌های پیشین، کد PHP همیشه به بایت‌کد تبدیل و سپس توسط ماشین مجازی Zend اجرا می‌شد. اما در PHP 8، JIT می‌تواند بخش‌هایی از کد را مستقیماً به زبان ماشین ترجمه کند.

نتیجه؟
در کارهای سنگین محاسباتی (مانند پردازش تصویر، شبیه‌سازی و عملیات ریاضی) تا ۳ برابر افزایش سرعت دیده می‌شود. البته برای برنامه‌های معمولی وب (مانند وردپرس یا لاراول)، بهبود سرعت چشمگیر نیست، اما پتانسیل بسیار بالایی برای کاربردهای خاص دارد.


۲. Attributes (نشانه‌گذاری‌های بومی)

تا پیش از PHP 8، برای افزودن متادیتا به کلاس‌ها و متدها مجبور بودید از DocBlock کامنت‌ها استفاده کنید (مثل @route در لاراول). اما PHP 8 Attributes را معرفی کرد: یک روش بومی و ساختاریافته برای نشانه‌گذاری کد.

مثال:

#[Route('/api/users', methods: ['GET'])]
class UserController {
    #[Inject]
    private UserRepository $repository;
}
 

این ویژگی باعث می‌شود ابزارهایی مانند Doctrine، Symfony و Laravel دیگر نیازی به پردازش کامنت‌ها نداشته باشند و کد تمیزتر و سریع‌تری داشته باشید.


۳. Named Arguments (آرگومان‌های نام‌دار)

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

مثال:

 

این قابلیت به خصوص برای توابع با پارامترهای زیاد یا پیش‌فرض بسیار مفید است.


۴. Constructor Property Promotion

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

قبلاً:

 

حالا در PHP 8:

 
 

کد بسیار کم‌حجم‌تر و خواناتر شده است.


۵. Match Expression (جایگزین بهتری برای Switch)

عبارت match شبیه switch است، اما با تفاوت‌های مهم:

  • نیاز به break ندارد.

  • مقدار بازگشتی دارد (می‌توانید نتیجه را به متغیر نسبت دهید).

  • مقایسه از نوع Strict (===) است.

مثال:

 
 

این روش خواناتر و امن‌تر از switch سنتی است.


۶. Nullsafe Operator

فرض کنید می‌خواهید به یک پراپرتی از یک آبجکت برسید، اما ممکن است خود آبجکت یا واسط‌ها null باشند. در PHP 8 با عملگر ?-> می‌توانید زنجیره‌ای از دسترسی‌ها را بدون نگرانی از خطای Null انجام دهید.

مثال:

 

اگر هرکدام از این مراحل null باشد، کل عبارت null برمی‌گرداند و خطایی رخ نمی‌دهد.


۷. انواع ترکیبی (Union Types)

حالا می‌توانید برای یک پارامتر یا خروجی بیش از یک نوع داده را مشخص کنید.

مثال:

 

این قابلیت امنیت نوع‌ها را به طرز چشمگیری افزایش می‌دهد.


۸. بهبود در توابع داخلی

  • str_contains(): بررسی وجود زیررشته در رشته

  • str_starts_with() و str_ends_with()

  • get_debug_type(): نمایش نوع واقعی متغیر (بر خلاف gettype() که گاهی گمراه‌کننده است)

مثال:

 

دیگر نیازی به استفاده از strpos() !== false نیست.


۹. Weak Maps

نقشه‌های ضعیف (Weak Maps) به شما اجازه می‌دهند اشیاء را به عنوان کلید در یک آرایه ذخیره کنید، بدون اینکه مانع از پاک شدن آن شیء توسط گاربیج کالکتور شوند. این ویژگی برای پیاده‌سازی کش و سیستم‌های ذخیره‌سازی موقت عالی است.


۱۰. TypeError بهبودیافته

حالا خطاهای نوع در توابع دقیق‌تر و کمک‌کننده‌تر هستند. پیغام خطا نشان می‌دهد دقیقاً چه نوعی انتظار می‌رفته و چه نوعی دریافت شده است.


جمع‌بندی: آیا به PHP 8 ارتقا دهید؟

پاسخ بله است، اما با رعایت نکات:

  • برنامه‌های قدیمی ممکن است با تغییرات ناسازگار (مانند حذف برخی توابع) مواجه شوند.

  • اکثر فریمورک‌های محبوب (Laravel، Symfony، WordPress) از PHP 8 پشتیبانی کامل دارند.

  • افزایش سرعت، کدنویسی خواناتر و کاهش خطاهای رایج ارزش ارتقا را دارد.

PHP 8 سنگی محکم در مسیر تکامل این زبان است. اگر هنوز از PHP 7 استفاده می‌کنید، زمان مناسبی است برای مهاجرت به PHP 8 یا حتی PHP 8.1 و 8.2 که بهبودهای بیشتری نیز ارائه داده‌اند.