راهنمای ارتقا
تغییرات با تاثیر زیاد
تغییرات تاثیر متوسط
تغییرات کم تاثیر
ارتقا به 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 اختیاری است.