نسخه:

راهنمای ارتقا

تغییرات با تاثیر زیاد

تغییرات تاثیر متوسط

تغییرات کم تاثیر

ارتقا به 10.0 از 9.x

زمان تخمینی ارتقا: 10 دقیقه

ما سعی می کنیم هر تغییر احتمالی را مستند کنیم. از آنجایی که برخی از این تغییرات شکسته در بخش‌های مبهم فریمورک هستند، تنها بخشی از این تغییرات ممکن است بر برنامه شما تأثیر بگذارد. می خواهید در زمان صرفه جویی کنید؟ می توانید از Laravel Shift برای کمک به ارتقاء خودکار برنامه خود استفاده کنید.

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

احتمال تاثیر: زیاد

PHP 8.1.0 مورد نیاز است

اکنون لاراول به PHP 8.1.0 یا بالاتر نیاز دارد.

Composer 2.2.0 مورد نیاز است

لاراول اکنون به Composer 2.2.0 یا بالاتر نیاز دارد.

وابستگی های composer

شما باید وابستگی های زیر را در فایل برنامه خود به روز کنید composer.json :

  • laravel/framework به ^10.0
  • laravel/sanctum به ^3.2
  • doctrine/dbal به ^3.0
  • spatie/laravel-ignition به ^2.0
  • laravel/passport به ^11.0 ( راهنمای ارتقاء )

اگر در حال ارتقا به Sanctum 3.x از سری نسخه 2.x هستید، لطفاً با راهنمای ارتقاء Sanctum مشورت کنید .

علاوه بر این، اگر می خواهید از PHPUnit 10 استفاده کنید ، باید processUncoveredFiles ویژگی را از بخش فایل پیکربندی <coverage> برنامه خود حذف کنید. phpunit.xml سپس، وابستگی های زیر را در فایل برنامه خود به روز کنید composer.json :

  • nunomaduro/collision به ^7.0
  • phpunit/phpunit به ^10.0

در نهایت، سایر بسته های شخص ثالث مصرف شده توسط برنامه شما را بررسی کنید و تأیید کنید که از نسخه مناسب برای پشتیبانی از لاراول 10 استفاده می کنید.

حداقل پایداری

باید تنظیمات موجود در فایل minimum-stability برنامه خود را به . یا از آنجایی که مقدار پیش‌فرض آن است ، می‌توانید این تنظیم را از فایل برنامه خود حذف کنید: composer.json stable minimum-stability stable composer.json

"minimum-stability": "stable",

کاربرد

اتصال مسیر عمومی

احتمال تاثیر: کم

اگر برنامه شما "مسیر عمومی" خود را با اتصال path.public به کانتینر سفارشی می کند، در عوض باید کد خود را برای فراخوانی usePublicPath روش ارائه شده توسط Illuminate\Foundation\Application شی به روز کنید:

app()->usePublicPath(__DIR__.'/public');

مجوز

روش registerPolicies _

احتمال تاثیر: کم

متد registerPolicies the AuthServiceProvider اکنون به طور خودکار توسط فریمورک فراخوانی می شود. بنابراین، می‌توانید تماس با این روش را از boot روش برنامه خود حذف کنید AuthServiceProvider .

حافظه پنهان

برچسب های کش Redis

احتمال تاثیر: متوسط

استفاده از Cache::tags() فقط برای برنامه هایی که از Memcached استفاده می کنند توصیه می شود. اگر از Redis به عنوان درایور کش برنامه خود استفاده می کنید، باید به فکر انتقال به Memcached یا استفاده از یک راه حل جایگزین باشید.

پایگاه داده

عبارات پایگاه داده

احتمال تاثیر: متوسط

"عبارات" پایگاه داده (معمولاً از طریق DB::raw ) در Laravel 10.x بازنویسی شده اند تا عملکردهای بیشتری در آینده ارائه دهند. قابل ذکر است که مقدار رشته خام گرامر اکنون باید از طریق getValue(Grammar $grammar) روش عبارت بازیابی شود. ارسال یک عبارت به یک رشته با استفاده از دیگر (string) پشتیبانی نمی شود.

به طور معمول، این بر برنامه های کاربردی کاربر نهایی تأثیر نمی گذارد . با این حال، اگر برنامه شما به صورت دستی عبارات پایگاه داده را به رشته ها با استفاده (string) یا فراخوانی __toString مستقیم متد روی عبارت ارسال می کند، باید کد خود را برای فراخوانی getValue متد به روز کنید:

use Illuminate\Support\Facades\DB;
 
$expression = DB::raw('select 1');
 
$string = $expression->getValue(DB::connection()->getQueryGrammar());

Query Exception Constructor

احتمال تاثیر: بسیار کم

سازنده Illuminate\Database\QueryException اکنون نام اتصال رشته ای را به عنوان اولین آرگومان خود می پذیرد. اگر برنامه شما به صورت دستی این استثنا را پرتاب می کند، باید کد خود را مطابق با آن تنظیم کنید.

ستون های ULID

احتمال تاثیر: کم

هنگامی که مهاجرت‌ها ulid متد را بدون هیچ آرگومان فراخوانی می‌کنند، اکنون ستون نامگذاری می‌شود ulid . در نسخه های قبلی لاراول، با فراخوانی این روش بدون هیچ آرگومان، ستونی به اشتباه به نام uuid :

$table->ulid();

برای تعیین صریح نام ستون هنگام فراخوانی ulid متد، می‌توانید نام ستون را به متد ارسال کنید:

$table->ulid('ulid');

شیوا

املاک مدل "Dates".

احتمال تاثیر: متوسط

ویژگی منسوخ مدل Eloquent $dates حذف شده است. اکنون برنامه شما باید از $casts ویژگی استفاده کند:

protected $casts = [
'deployed_at' => 'datetime',
];

بومی سازی

فهرست زبان

احتمال تاثیر: ندارد

اگرچه به برنامه های موجود مرتبط نیست، اسکلت برنامه لاراول دیگر lang به طور پیش فرض حاوی دایرکتوری نیست. در عوض، هنگام نوشتن برنامه های جدید لاراول، ممکن است با استفاده از lang:publish دستور Artisan منتشر شود:

php artisan lang:publish

ورود به سیستم

مونولوگ 3

احتمال تاثیر: متوسط

وابستگی Monolog لاراول به Monolog 3.x به روز شده است. اگر در برنامه خود مستقیماً با Monolog تعامل دارید، باید راهنمای ارتقاء Monolog را مرور کنید .

اگر از سرویس‌های ثبت شخص ثالث مانند BugSnag یا Rollbar استفاده می‌کنید، ممکن است لازم باشد آن بسته‌های شخص ثالث را به نسخه‌ای ارتقا دهید که از Monolog 3.x و Laravel 10.x پشتیبانی می‌کند.

صف ها

روش Bus::dispatchNow _

احتمال تاثیر: کم

منسوخ شده Bus::dispatchNow و dispatch_now روش ها حذف شده اند. در عوض، برنامه شما باید به ترتیب از متدهای Bus::dispatchSync و استفاده کند dispatch_sync .

مسیریابی

نام مستعار میان افزار

احتمال تاثیر: اختیاری

در برنامه‌های جدید لاراول، $routeMiddleware ویژگی کلاس App\Http\Kernel به تغییر نام داده شده است $middlewareAliases تا هدف آن را بهتر نشان دهد. شما می توانید نام این ویژگی را در برنامه های موجود خود تغییر دهید. با این حال، آن مورد نیاز نیست.

مقادیر بازده محدود کننده نرخ

احتمال تاثیر: کم

هنگام فراخوانی RateLimiter::attempt متد، مقدار بازگشتی توسط بسته ارائه شده اکنون توسط متد برگردانده می شود. اگر چیزی null برگردانده نشد، attempt متد برمی گردد true :

$value = RateLimiter::attempt('key', 10, fn () => ['example'], 1);
 
$value; // ['example']

روش Redirect::home _

احتمال تاثیر: بسیار کم

روش منسوخ Redirect::home حذف شده است. در عوض، برنامه شما باید به مسیری با نام صریح هدایت شود:

return Redirect::route('home');

آزمایش کردن

تقلید خدمات

احتمال تاثیر: متوسط

ویژگی منسوخ شده MocksApplicationServices از چارچوب حذف شده است. این صفت روش های آزمایشی مانند expectsEvents , expectsJobs و expectsNotifications .

اگر برنامه شما از این روش ها استفاده می کند، توصیه می کنیم به ترتیب به Event::fake , Bus::fake و Notification::fake , انتقال دهید. می‌توانید در اسناد مربوط به مؤلفه‌ای که می‌خواهید جعل کنید، درباره تقلید از طریق تقلبی اطلاعات بیشتری کسب کنید.

اعتبار سنجی

پیام‌های قانون اعتبارسنجی بسته شدن

احتمال تاثیر: بسیار کم

هنگام نوشتن قوانین اعتبارسنجی سفارشی مبتنی بر بسته شدن، با فراخوانی $fail بیش از یک بار تماس، پیام‌ها به جای بازنویسی پیام قبلی، به آرایه اضافه می‌شوند. معمولاً این روی برنامه شما تأثیری نخواهد داشت.

علاوه بر این، $fail callback اکنون یک شی را برمی گرداند. اگر قبلاً نوع بازگشت بسته شدن تأیید اعتبار خود را تایپ می‌کردید، ممکن است از شما بخواهد تا نوع اشاره خود را به‌روزرسانی کنید:

public function rules()
{
'name' => [
function ($attribute, $value, $fail) {
$fail('validation.translation.key')->translate();
},
],
}

فرم درخواست پس از روش

احتمال تاثیر: بسیار کم

در درخواست های فرم، این after روش اکنون توسط لاراول رزرو شده است . اگر درخواست‌های فرم شما یک after متد را تعریف می‌کنند، روش باید تغییر نام داده یا تغییر داده شود تا از ویژگی جدید "after validation" درخواست‌های فرم لاراول استفاده شود.

متفرقه

ما همچنین شما را تشویق می کنیم که تغییرات موجود در laravel/laravel مخزن GitHub را مشاهده کنید . در حالی که بسیاری از این تغییرات مورد نیاز نیستند، ممکن است بخواهید این فایل ها را با برنامه خود هماهنگ نگه دارید. برخی از این تغییرات در این راهنمای ارتقا پوشش داده خواهد شد، اما برخی دیگر، مانند تغییرات در فایل‌های پیکربندی یا نظرات، چنین نیستند.

می توانید به راحتی تغییرات را با ابزار مقایسه GitHub مشاهده کنید و انتخاب کنید کدام به روز رسانی برای شما مهم است. با این حال، بسیاری از تغییرات نشان داده شده توسط ابزار مقایسه GitHub به دلیل پذیرش انواع بومی PHP توسط سازمان ما است. این تغییرات سازگار با عقب هستند و استفاده از آنها در طول مهاجرت به لاراول 10 اختیاری است.