لاراول 11 منتشر شد! لاراول 11 یکی از مهیج ترین نسخه های فریمورک برای مدت طولانی است. تغییرات بسیار زیاد و ویژگی های جدید، بیایید آنها را بررسی کنیم! لاراول 11 که در 12 مارس 2024 منتشر شد، بسیاری از پیشرفتها را با هدف کارآمدتر و ایمنتر کردن توسعه وب به ارمغان میآورد.
در اینجا خلاصه ای سریع از آنچه باید بدانید آمده است:
انتشار و پشتیبانی: بهروزرسانیهای منظم تا August 2024 و وصلههای امنیتی تا فوریه 2025.
چرا ارتقا؟
عملکرد سریعتر به دلیل بهبود مسیریابی و کش.
ویژگی های امنیتی پیشرفته
ابزارهای توسعه دهنده جدید و فرآیند ارتقای ساده شده.
سازگاری کامل با PHP 8.2.
ویژگی های جدید:
ساختار پروژه ساده شده با دایرکتوری های از پیش تعیین شده کمتر.
پیکربندی و تنظیمات در فایلهای env.
ساده شده است.
مدیریت داده ها و میدلور پیشرفته.
scheduling بهبود یافته و ابزارهای رفع باگ.
بهینه سازی برای سازماندهی مسیر و روابط مدل.
محدود کردن نرخ پیشرفته و نقطه پایانی جدید بررسی سلامت.
ارتقاء به لاراول 11 نه تنها روند توسعه شما را ساده می کند، بلکه از آخرین ویژگی های PHP نیز بهره می برد و از سرعت، ایمن و به روز بودن پروژه های شما اطمینان می دهد.
چرا به لاراول 11 ارتقا دهید؟
ارتقا به لاراول 11 به چند دلیل یک حرکت هوشمندانه است:
- عملکرد سریعتر - برنامه های شما به دلیل بهبودهایی در نحوه مدیریت مسیرها، نحوه ایجاد کوئری ها و نحوه ذخیره اطلاعات در حافظه پنهان سریعتر اجرا می شوند.
- امنیت بهتر - لاراول 11 شامل ویژگیها و اصلاحات امنیتی جدیدی است که به حفظ امنیت برنامه و دادههای آن کمک میکند.
- ابزارهای جدید برای توسعه دهندگان - ابزارهای بهتری برای دیباگ کردن، دستورات جدید برای Artisan (ابزار خط فرمان لاراول) و داکیومنت به روز شده وجود دارد تا به شما کمک کند کارآمدتر کار کنید.
- به روز رسانی آسان - انتقال از لاراول 10 به 11 ساده است زیرا نسخه جدید به گونه ای طراحی شده است که با نسخه قدیمی تر کار کند.
با بهروزرسانی به لاراول 11، میتوانید از آخرین ویژگیهای PHP 8.2، راهاندازی آسانتر و ابزارهای تست بهتر بهره ببرید. این بدان معنی است که می توانید برنامه های قوی تر و ایمن تر را سریعتر بسازید. برای آپگرید از لاراول 10 به 11 می توانید این مقاله را بررسی کنید.
1. ساختار برنامه جدید لاراول 11
لاراول 11 راه سادهتری برای شروع پروژههای شما با پوشهها و فایلهای از پیش تعیینشده کمتری ارائه میکند. مثل شروع با یک میز تمیزتر است.
دایرکتوری های اصلاح شده
پوشههای معمول برای رسیدگی به خطاها و middleware (یعنی کدهایی که درخواستها را قبل از رسیدن به برنامه شما بررسی میکنند) از بین رفتهاند. اکنون، این بخشی از خود لاراول است.
پوشه های Database و Tests نیز کوتاه شده اند، به این معنی که موارد کمتری وجود دارد که ممکن است فوراً به آن نیاز نداشته باشید.
این تغییر باعث می شود پروژه شما از همان ابتدا مرتب تر به نظر برسد.
مهم ترین تغییر برای لاراول 11، اسکلت نرم افزاری مینیمالیستی تر است.
هنگامی که یک پروژه جدید لاراول را نصب می کنید، ساختار پوشه به شکل زیر خواهد بود:
app/
└── Http/
├── Controllers/
│ └── Controller.php
├── Models/
│ └── User.php
└── Providers/
└── AppServiceProvider.php
bootstrap/
├── app.php
└── providers.php
config/
...
این تغییرات ساختار اختیاری است. آنها فقط برای پروژه های جدید پیش فرض خواهند بود. برنامه های قدیمی لاراول می توانند ساختار قدیمی را داشته باشند.
پوشه های حذف شده: app/Console
، app/Exceptions
، app/Http/Middleware
.
Routes، Middlewares و Exceptions اکنون در فایل bootstrap/app.php
ثبت شده اند.
به عنوان مثال فایل bootstrap/app.php
به صورت زیر می باشد:
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
با لاراول 11، تغییر قابل توجهی در نحوه مدیریت middleware ایجاد شده است که هدف آن ساختار برنامهای شیکتر و کارآمدتر است. پیش از این، برنامه های جدید لاراول با 9 میدلور خارج از جعبه عرضه می شدند. این middleware ها برای کارهای مختلف، از جمله درخواست احراز هویت، برش رشته ورودی، و اعتبار سنجی توکن CSRF ضروری بودند و به امنیت و عملکرد اساسی برنامه های لاراول کمک می کردند.
لاراول 11 در تلاشی برای ساده کردن برنامه ها و کاهش پیچیدگی اولیه آنها، این middleware را مستقیماً در چارچوب ادغام کرده است. این ادغام به این معنی است که middleware دیگر در ساختار دایرکتوری برنامه قرار نمی گیرد و در نتیجه باعث کاهش درهم و برهمی و منحنی یادگیری اولیه برای توسعه دهندگان جدید می شود.
برای ارائه انعطافپذیری و حفظ توانایی شخصیسازی رفتار middleware، لاراول 11 روشهای جدیدی را معرفی میکند. این روشها را میتوان در فایل bootstrap/app.php
برنامهتان مورد استفاده قرار داد، و به شما امکان میدهد تا عملکرد middleware را بدون نیاز به تغییر مستقیم یا گنجاندن فایلهای middleware در پروژهتان انجام دهید. این تغییر نه تنها ساختار برنامه را ساده میکند، بلکه با سادهتر و یکپارچهسازی سفارشیسازی middleware، تجربه کلی توسعهدهنده را نیز افزایش میدهد.
2. سازماندهی routes
به طور پیش فرض، شما با دو فایل اصلی برای routes کار خواهید کرد: web.php
برای صفحات وب خود و console.php
برای وظایف خط فرمان.
اگر به API یا مسیرهای broadcasting نیاز دارید، می توانید آنها را با چند مرحله اضافی روشن کنید. این راهاندازی جدید به این معنی است که کدهای غیرضروری کمتری سر راه شما قرار میگیرد. همه چیز در مورد آسان کردن پروژه شما با تمرکز بر موارد منحصر به فرد برنامه شما است.
همچنین، پوشه routes را پاک کرد. فایل های routes/channel.php
، routes/console.php
و routes/api.php
حذف شده اند. برای اضافه کردن این موارد به پروژه خود از دستورات Artisan زیر می توانید استفاده کنید:
php artisan install:api
php artisan install:broadcasting
وقتی این دستور artisan را اجرا می کنید، فایل routes/api.php
ایجاد و در bootstrap/app.php
ثبت می شود و Laravel Sanctum نصب می شود. شما فقط باید ویژگی Laravel\Sanctum\HasApiTokens
را به مدل User اضافه کنید.
مشابه تغییرات API برای broadcast نیز قابل نصب است: برای آماده سازی برنامه، می توانید از دستور php artisan install:broadcast
artisan استفاده کنید.
Scheduling
لاراول 11 با معرفی فساد جدید Schedule، پیشرفت قابل توجهی را در زمان بندی وظایف ارائه می دهد. این پیشرفت، فرآیند تعریف وظایف برنامه ریزی شده را با اجازه دادن مستقیم به آنها در فایل routes/console.php
برنامه شما ساده می کند. این رویکرد نوآورانه نیاز سنتی برای یک کلاس هسته کنسول جداگانه برای مدیریت وظایف برنامه ریزی شده را حذف می کند.
با نمای برنامه، توسعهدهندگان اکنون میتوانند بهطور واضحتر و راحتتر وظایف خود را در مکانی برنامهریزی کنند که در منطق مسیریابی برنامهشان مرکزی است. این ادغام خوانایی و قابلیت نگهداری را افزایش می دهد و مدیریت و بررسی وظایف برنامه ریزی شده در کنار دستورات کنسول را آسان تر می کند. این تغییر بخشی از تلاشهای مداوم لاراول برای سادهسازی و بهبود تجربه توسعهدهنده است و این چارچوب را برای ساخت برنامههای وب مدرن کارآمدتر و کاربرپسندتر میکند.
use Illuminate\Support\Facades\Schedule;
Schedule::command('emails:send')->daily();
3. پیکربندی و ارائه Service Providers
اکنون، تمام تنظیمات شما در فایلهای env.
وجود دارد. اینجا جایی است که اسرار و تنظیمات را ایمن نگه می دارید. اگر میخواهید چیزی را تغییر دهید، میتوانید از دستورات Artisan برای باز کردن آن تنظیمات استفاده کنید.
این تغییر پیشینه ای دارد. در ابتدا، زمانی که تیلور ساختار مینیمالیسم را معرفی کرد، تمام فایلهای پیکربندی حذف شدند. با این حال، تیلور از این تغییر راضی نبود و نسخه پیکربندی مینیمالیسم را معرفی کرد.
بنابراین، اگر به پوشه config/
لاراول 10 نگاه کنید، متوجه می شوید که این فایل ها در لاراول 11 وجود ندارند:
config/broadcasting.php
config/cors.php
config/hashing.php
config/sanctum.php
config/view.php
اما می توانید آنها را به صورت دستی با این دستور منتشر کنید:
php artisan config:publish
یا :
php artisan config:publish --all
همچنین، برخی از مقادیر پیکربندی داخل فایلهای موجود به نفع اتوماسیونهای درون خود چارچوب حذف شدند.
در لاراول 11، ساختار برنامه برای افزایش سادگی و کارایی ساده شده است. برخلاف نسخههای قبلی که شامل پنج Service Provider پیشفرض بودند، لاراول 11 رویکرد تلفیقیتری را تنها با یک AppServiceProvider معرفی میکند. این تغییر به این معنی است که بسیاری از قابلیتهایی که قبلاً در چندین Service Provider پخش شدهاند، اکنون یا بهطور خودکار توسط چارچوب مدیریت میشوند، در bootstrap/app.php
گنجانده شدهاند، یا میتوانند مستقیماً در AppServiceProvider مدیریت شوند.
به عنوان مثال، event discovery به طور پیشفرض فعال است و نیاز به ثبتهای دستی رویداد و listener را کاهش میدهد. با این حال، اگر نیاز به ثبت دستی وجود داشته باشد، می توان آن را بدون زحمت در AppServiceProvider انجام داد. این سادهسازی به حوزههای دیگر نیز گسترش مییابد، مانند اتصالات مدل مسیر و گیتهای مجوز، که قبلاً ممکن بود در Service Provider خاصی مانند AuthServiceProvider قرار گرفته باشند، اما اکنون میتوانند در AppServiceProvider نیز ادغام شوند. این تکامل نشان دهنده تغییر قابل توجهی به سمت فرآیند پیکربندی برنامه کاربردی ساده تر و کارآمدتر در لاراول 11 است.
4. پیش فرض های جدید: Pest و SQLite
با لاراول 11، چند تنظیمات پیش فرض جدید وجود دارد.
چارچوب تست: Pest
تیلور یک نظرسنجی در X (توئیتر) انجام داد و اکثریت مردم به Pest رای دادند تا چارچوب تست پیش فرض باشد، بنابراین تغییر کرد.
پایگاه داده پیش فرض: SQLite
پایگاه داده پیش فرض لاراول به SQLite تغییر یافت. لاراول 11 تغییر قابل توجهی در پیکربندی پایگاه داده خود ایجاد می کند و SQLite را به عنوان پایگاه داده پیش فرض برای ذخیره سازی و همچنین برای مدیریت سشن، کش و سیستم های صف لاراول به کار می گیرد. این تغییر به طور قابل توجهی فرآیند راه اندازی اولیه را برای برنامه های جدید لاراول ساده می کند و به توسعه دهندگان این امکان را می دهد که مستقیماً در ساخت برنامه های خود بدون نیاز فوری به نصب نرم افزار پایگاه داده خارجی یا ایجاد migration های اضافی پایگاه داده وارد شوند.
حرکت به استفاده از SQLite به طور پیش فرض نشان دهنده پیشرفت در درایورهای پایگاه داده در اکوسیستم لاراول است. با گذشت زمان، این درایورها برای ارائه عملکرد و قابلیت اطمینان قوی بهبود یافته اند و آنها را برای محیط های تولید در بسیاری از سناریوهای کاربردی مناسب می کند. این توسعه نشاندهنده توجه متفکرانه به راحتی توسعهدهنده و قابلیتهای در حال تکامل سرویسهای پایگاه داده لاراول است.
اگر می خواهید درایور دیتابیس پیش فرض را به MySQL تغییر دهید، به صورت زیر اعمال کنید.
فایل env
. به صورت پیش فرض به صورت زیر می باشد:
// ...
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
// ...
ولی اگر می خواهید به MySQL برگردید به صورت زیر تغییر دهید:
// ...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
// ...
علاوه بر این، ایجاد یک پروژه با استفاده از دستور composer create-project
یا از طریق Laravel Installer به طور خودکار فایل SQLite را ایجاد می کند و migration های اولیه پایگاه داده را برای شما اجرا می کند.
این به شما این امکان را می دهد که بلافاصله پس از ایجاد یک برنامه جدید لاراول، بدون نیاز به نصب نرم افزار اضافی یا ایجاد انتقال پایگاه داده اضافی، ساخت برنامه خود را شروع کنید.
5. دستورات جدید "make:xxxxx".
لاراول 11 با ساخت جدید ارائه می شود: دستورات artisan. اکنون می توانید enum ها، رابط ها و کلاس ها را ایجاد کنید.
php artisan make:enum
php artisan make:class
php artisan make:interface
6. بررسی سلامت
لاراول 11 با یک Route /up
ثبت شده جدید ارائه می شود.روش جدیدی برای بررسی اینکه آیا برنامه شما با یک مسیر health/
به خوبی اجرا می شود یا خیر وجود دارد. این به شما امکان می دهد عملکرد برنامه خود را ببینید و چک های خود را تنظیم کنید. همچنین به شما میگوید که چه زمانی مشکلی وجود دارد، که برای حفظ کارها بسیار مفید است. این دستورالعمل به لاراول اجازه می دهد تا به طور خودکار یک نقطه پایانی ساده برای بررسی سلامت تعریف کند، و ادغام برنامه را با خدمات نظارت بر سلامت شخص ثالث و سیستم های ارکستراسیون مانند Kubernetes افزایش دهد.
برای مثال در فایل bootstrap/app.php
می توانید آن را ببینید:
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
channels: __DIR__.'/../routes/channels.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
لاراول هنگام تنظیم مسیرها مسیر سلامت را تعریف می کند و رویداد DiagnosticHealth را فعال می کند. هنگامی که درخواستهای HTTP به این مسیر ارسال میشود، لاراول یک رویداد DiagnosingHealth را ارسال میکند، که به شما امکان میدهد بررسیهای سلامت اضافی مرتبط با برنامه خود را انجام دهید، مانند تأیید اتصال پایگاه داده و اطمینان از اینکه حافظه پنهان مطابق انتظار کار میکند. این ویژگی به ویژه در محیطهای بومی ابری مفید است، جایی که بررسیهای سلامت خودکار برای مقیاسبندی، متعادلسازی بار و فرآیندهای بازیابی خودکار بسیار مهم هستند.
7. ویژگی Dumpable
لاراول 11 یک ویژگی جدید Dumpable را معرفی می کند. در نظر گرفته شده است که در اکثر کلاس های فریمورک جایگزین متدهای ()dd
و ()dump
فعلی شود. کاربران و سازندگان پکیج میتوانند این ویژگی را برای دیباگ کردن آسانتر کد لحاظ کنند.
در اینجا مثال استفاده از آن آمده است:
use Illuminate\Support\Traits\Conditionable;
use Illuminate\Support\Traits\Dumpable;
class Address
{
use Conditionable, Dumpable;
// ...
}
$address = new Address;
// - $address->setThis()->setThat();
// + $address->setThis()->dd()->setThat();
8. Eager Load را محدود کنید
لاراول 11 اجازه می دهد تا رکوردهای Eager Load به صورت بومی و بدون پکیج های خارجی محدود شود.
class User extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
class Post extends Model
{
// ...
}
$users = User::with(['posts' => function ($query) {
$query->latest()->limit(10);
}])->get();
قبل از Laravel 11، شما به یک پکیج جداگانه Eloquent Eager Limit توسط Jonas Staudenmeir نیاز داشتید.
9. متد Casts
از لاراول 11، کست ها به جای ویژگی محافظت شده casts$
، در متد محافظت شده ()casts
ارائه می شوند.
به صورت زیر :
class User extends Authenticatable
{
// ...
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
}
همچنین اکنون امکان ارائه آرایه نیز وجود دارد. به صورت زیر:
protected function casts(): array
{
return [
'bookOptions' => [AsCollection::class, OptionCollection::class],
];
}
این یک تغییر غیرقابل شکست است. فقط باید بدانید که متد ()casts
بر ویژگی casts$
اولویت دارد.
10. متد ()Once
یک تابع memoization جدید به نام ()Once
وجود دارد. این تابع تضمین می کند که یک callable فقط یک بار فراخوانی می شود و در فراخوانی های بعدی همان نتیجه را برمی گرداند.
برای مثال :
class User extends Model
{
public function stats(): array
{
return once(function () {
// Expensive operations to generate user stats, multiple db queries, etc...
return $stats;
});
}
}
// Assuming you have two User instances: $userA and $userB
$userA->stats();
$userA->stats(); // cached result from previous line...
$userB->stats(); // Not using $userA cached results, because $userB !== $userA
$userB->stats(); // cached result from previous line...
11. تست Queue Interaction
قبلاً، تلاش برای تست اینکه یک job در صف منتشر شده، حذف شده است یا به صورت دستی ناموفق بوده است، دشوار بود و نیاز به تعریف فیک و خرد صف سفارشی داشت. با این حال، در لاراول 11، می توانید به راحتی این فعل و انفعالات صف را با استفاده از متد withFakeQueueInteractions
تست کنید:
<?php
use App\Jobs\ProcessPodcast;
it('may release a job with a delay' , function() {
$job = (new ProcessPodcast)->withFakeQueueInteractions();
$job->handle();
$job->assertReleased(delay: 30);
});
علاوه بر ادعای assertReleased
، که میتوانید از آن برای تأیید اینکه آیا یک جاب دوباره به صف باز شده است، استفاده کنید، همچنین میتوانید از assertions assertFailed
یا assertDeleted
برای تعیین اینکه آیا یک جاب شکست خورده است یا حذف شده است استفاده کنید.
12. چرخش کلید رمزگذاری برازنده
از آنجایی که لاراول همه کوکی ها، از جمله کوکی سشن برنامه شما را رمزگذاری می کند، اساساً هر درخواستی از برنامه لاراول به رمزگذاری متکی است. با این حال، به همین دلیل، چرخاندن کلید رمزگذاری برنامه شما، همه کاربران را از برنامه شما خارج می کند. علاوه بر این، رمزگشایی داده هایی که توسط کلید رمزگذاری قبلی رمزگذاری شده بودند غیرممکن می شود.
لاراول 11 به شما این امکان را می دهد که کلیدهای رمزگذاری قبلی برنامه خود را از طریق متغیر environment APP_PREVIOUS_KEYS
به صورت لیستی با کاما تعریف کنید.
هنگام رمزگذاری مقادیر، لاراول همیشه از کلید رمزگذاری "current" استفاده می کند که در متغیر محیطی APP_KEY
قرار دارد. هنگام رمزگشایی مقادیر، لاراول ابتدا کلید فعلی را امتحان می کند. اگر رمزگشایی با استفاده از کلید فعلی ناموفق باشد، لاراول تمام کلیدهای قبلی را امتحان می کند تا زمانی که یکی از کلیدها قادر به رمزگشایی مقدار باشد.
این رویکرد برای رمزگشایی زیبا به کاربران اجازه میدهد تا بدون وقفه از برنامه شما استفاده کنند، حتی اگر کلید رمزگذاری شما چرخانده شود.
13. لاراول Reverb
Laravel Reverb ارتباطات بلادرنگ (Realtime) WebSocket فوق العاده سریع و مقیاس پذیر را مستقیماً به برنامه لاراول شما می آورد و با مجموعه ابزارهای broadcasting رویداد موجود لاراول مانند Laravel Echo یکپارچه سازی یکپارچه ارائه می دهد.
علاوه بر این، Reverb از مقیاس افقی از طریق قابلیتهای publish / subscribe Redis پشتیبانی میکند، و به شما این امکان را میدهد که ترافیک WebSocket خود را در چندین سرور Reverb بک اند توزیع کنید که همگی از یک برنامه واحد و با تقاضای بالا پشتیبانی میکنند.
برای استفاده از لاراول Reverb دستور زیر را اجرا کنید:
php artisan reverb:start
علاوه بر این، میتوانید عملکرد سرورهای Reverb خود را در Laravel Pulse کنترل کنید تا درک بهتری از تعداد اتصالات و پیامهای در حال مدیریت داشته باشید. این ویژگی جدید به ویژه برای برنامههایی که نیاز به عملکرد real-time دارند، مانند برنامههای چت، اعلانهای زنده و ابزارهای مشارکتی مفید است. با Laravel Reverb، توسعهدهندگان اکنون میتوانند از قدرت کامل پیامرسانی real-time در برنامههای لاراول خود بهره ببرند و سهولت استفاده را با استحکام و قابلیت اطمینانی که اکوسیستم لاراول به آن معروف است، ترکیب کنند.
14. محدودیت نرخ در هر ثانیه
بهروزرسانی اخیر لاراول پیشرفت قابلتوجهی در قابلیتهای Per-Second Rate آن ارائه میکند، و پشتیبانی را به جزئیات «در ثانیه» برای همه محدودکنندههای نرخ، از جمله مواردی که برای درخواستهای HTTP و کارهای در صف اعمال میشوند، گسترش میدهد. این توسعه نشان دهنده انحراف از محدودیت قبلی است که در آن محدودیت نرخ در لاراول به فواصل "در دقیقه" محدود می شد.
معرفی محدودیت نرخ "per-second" به توسعه دهندگان کنترل و دقت بیشتری بر نحوه مدیریت بار روی برنامه های خود ارائه می دهد. این ویژگی به ویژه در سناریوهایی با ارزش است که به محدودیتهای نرخ دقیق برای جلوگیری از بارگذاری بیش از حد سرورها یا APIها نیاز دارند، در حالی که هنوز هم پاسخگویی و تعامل بالایی را امکان پذیر میکند.
لاراول با تطبیق تنظیمات محدود کننده نرخ ریزتر، به تکامل خود در پاسخ به نیازهای برنامه های کاربردی وب مدرن ادامه می دهد و ابزارهای مورد نیاز توسعه دهندگان را برای ایجاد راه حل های قوی، مقیاس پذیر و کاربر پسند در اختیار توسعه دهندگان قرار می دهد. این پیشرفت بر تعهد لاراول به انعطافپذیری و عملکرد تأکید میکند، و توسعهدهندگان را قادر میسازد تا استراتژیهای پیچیدهتری برای محدود کردن نرخ اجرا کنند که با خواستههای خاص برنامههایشان همسو باشد.
RateLimiter::for('invoices', function (Request $request) {
return Limit::perSecond(1);
});
15. رسیدگی به Exception
لاراول 11 با ادغام مدیریت استثنا به طور مستقیم در فایل bootstrap/app.php
به سادهسازی توسعه برنامهها ادامه میدهد و نیاز به کلاس کنترل استثنایی جداگانه را از بین میبرد. این تغییر به طور قابل توجهی تعداد فایلهای یک برنامه جدید لاراول را کاهش میدهد و به ساختار پروژه تمیزتر و قابل مدیریتتر کمک میکند.
سفارشی کردن مدیریت استثنا در فایل bootstrap/app.php
به توسعه دهندگان اجازه می دهد تا نحوه برخورد برنامه خود با استثناها را در یک مکان متمرکز پیکربندی کنند. این رویکرد نه تنها معماری را سادهتر میکند، بلکه تغییر رفتار مدیریت استثناها را بر اساس نیازهای خاص برنامه برای توسعهدهندگان سادهتر میکند.
لاراول 11 با ادغام عملکردهای کلیدی مانند مسیریابی، middleware و اکنون مدیریت استثنا در فایلهای کمتر، تجربه توسعهدهنده را با تمرکز بر کارایی و سادگی افزایش میدهد. این تکامل چارچوب نشاندهنده گرایش گستردهتر به سمت به حداقل رساندن پیچیدگی و تقویت فرآیند توسعه شهودیتر است.
->withExceptions(function (Exceptions $exceptions) {
$exceptions->dontReport(MissedFlightException::class);
$exceptions->reportable(function (InvalidOrderException $e) {
// ...
});
})
16. اعتبار سنجی Prompts
Laravel Prompts یک پکیج PHP است که به طرز ماهرانه ای طراحی شده است که به تقویت توسعه برنامه های کاربردی خط فرمان مبتنی بر لاراول با ترکیب فرم های جذاب و تعاملی از نظر زیبایی شناختی اختصاص یافته است. این ابزار تجربه فرم معمولی را از سادگی خط فرمان به قابلیتهای پویاتر و شبیه مرورگر ارتقا میدهد. ویژگیهایی مانند متن placeholder و قابلیتهای داخلی اعتبارسنجی دادهها، آن را بسیار خاص میکنند و فراتر از رویکرد آشنای خط فرمان سنتی PHP پیشرفت میکنند.
$name = text(
label: 'What is your name?',
validate: fn (string $value) => match (true) {
strlen($value) < 3 => 'The name must be at least 3 characters.',
strlen($value) > 255 => 'The name must not exceed 255 characters.',
default => null
}
);
$name = text('What is your name?', validate: [
'name' => 'required|min:3|max:255',
]);
آخرین اما نه کم اهمیت: حداقل PHP 8.2
سرانجام لاراول 11 پشتیبانی از PHP 8.1 را قطع کرد. اکنون PHP 8.2 حداقل مورد نیاز است.
راهنمای ارتقا و/یا Shift
بنابراین، اگر می خواهید برنامه های خود را به لاراول 11 ارتقا دهید و از ویژگی های جدید استفاده کنید، راهنمای ارتقاء اسناد رسمی را مطالعه کنید. یا اگر میخواهید فرآیند ارتقا را خودکار کنید، میتوانید از سرویسی مانند Laravel Shift استفاده کنید.
به خاطر داشته باشید که تغییرات اسکلت اختیاری است، عملکرد نحو قدیمی هنوز کار می کند و حذف یا منسوخ نشده است. بنابراین می توانید به لاراول 11 ارتقا دهید و همچنان از ساختار پوشه/کد قدیمی استفاده کنید.
نتیجه
لاراول 11 با به روز رسانی راه اندازی پروژه ها و آسان تر کردن انجام وظایف، کارها را برای توسعه دهندگان ساده تر و کارآمدتر می کند. این برنامه به گونه ای طراحی شده است که با موارد جدید در PHP 8.2 به خوبی کار کند و به شما کمک می کند تا باگ های کد خود را سریعتر برطرف کنید.