مقاله

typed class constants، json_validate، override attribute، dynamic class const fetch و تغییراتی که در Laravel 12 و PHP روزمره اثر می‌گذارند.

ویژگی‌های جدید PHP 8.3 — راهنمای عملی برای توسعه‌دهنده Laravel

ویژگی‌های جدید PHP 8.3 — راهنمای عملی برای توسعه‌دهنده Laravel

Laravel 12 به PHP 8.2+ نیاز دارد؛ اما اگر روی PHP 8.3 هستید — که روی XAMPP و VPSهای به‌روز رایج است — چند ویژگی هست که کیفیت کد را بالا می‌برد بدون refactor بزرگ. این مقاله خلاصه Release Notes رسمی PHP 8.3 است با زاویه دید توسعه‌دهنده Laravel.

چرا PHP 8.3 برای Laravel مهم است؟

هر نسخه PHP عملکرد، type safety و DX بهتر می‌دهد. Laravel از enum، readonly properties و attributes پشتیبانی می‌کند — PHP 8.3 لایه type را تقویت می‌کند. قبل از upgrade، php artisan test و compatibility پکیج‌ها را چک کنید.

Typed Class Constants

class PostStatus
{
    public const string Draft = 'draft';
    public const string Published = 'published';
}

قبلاً const فقط scalar بدون type declaration بود. در enumها و constant classهای Laravel-style مفید است.

Dynamic Class Constant Fetch

$key = 'Published';
$value = PostStatus::{$key};

دسترسی پویا به const — در config mapping و factory کمک می‌کند.

json_validate()

if (! json_validate($rawJson)) {
    throw new InvalidArgumentException('Invalid JSON payload');
}

بدون decode کامل، اعتبار JSON را چک می‌کند — برای webhook و API سبک‌تر از json_decode + json_last_error.

Attribute #[\Override]

class CachedPostRepository extends PostRepository
{
    #[\Override]
    public function findBySlug(string $slug): ?Post
    {
        // ...
    }
}

اگر parent متد را rename کند، PHP خطای compile-time می‌دهد — در repository و policy مفید.

Randomizer improvements

متدهای امن‌تر برای random bytes و string — برای token و OTP بهتر از rand() قدیمی.

تغییرات مهم از 8.2 که هنوز استفاده می‌کنید

  • Readonly classes — DTO immutable
  • Enums — status در Model به‌جای magic string
  • Null/false/true types — return type دقیق
  • First-class callable$this->format(...)

در معماری لایه‌ای DTO با readonly توضیح داده شده.

Deprecationها — قبل از upgrade بخوانید

هر minor deprecations دارد. لاگ PHP 8.3 روی staging را ببینید. پکیج‌های vendor با composer update به‌روز شوند.

Laravel و PHP 8.3

در composer.json:

"php": "^8.2"

محدودیت پروژه را می‌توانید به ^8.3 بالا ببرید اگر سرورها آماده‌اند. از php -v و composer check-platform-reqs استفاده کنید.

اشتباهات رایج

upgrade PHP بدون تست. نادیده گرفتن deprecation در log. استفاده نکردن از enum/readonly جایی که magic string دارید.

جمع‌بندی

PHP 8.3 ارزش upgrade دارد اگر hosting اجازه دهد. typed constants و json_validate روزمره‌اند. مسیر یادگیری: رودمپ وب.

مشاوره upgrade