⭐ 【 تغییرات لاراول 11 】: چه چیزی تغییر کرده است؟
لاراول 11، جدیدترین نسخه از فریمورک محبوب PHP، با تغییرات و ویژگیهای جذابی منتشر شده است که توسعهدهندگان را هیجانزده کرده است. در این نسخه، تمرکز اصلی بر روی بهبود عملکرد، امنیت، و استفاده از قابلیتهای جدید PHP 8.2 بوده است. اما تفاوتهای لاراول 10 با لاراول 11 چیست و چرا باید به این نسخه جدید توجه کنیم؟
اگر به دنبال یادگیری کامل و حرفهای ویژگیهای لاراول 11 هستید و میخواهید این تغییرات را به صورت عملی در پروژههای خود پیادهسازی کنید، دورهی ویژه ما با عنوان مسترکلاس لاراول 11 بهترین گزینه برای شماست. در این دوره، از طریق پروژه دیجی کالا ، تمام مفاهیم جدید این نسخه را پوشش میدهیم و شما را برای استفاده از قابلیتهای مدرن لاراول آماده میکنیم.
در این مقاله، نگاهی دقیق به تغییرات لاراول 11 خواهیم داشت و بررسی میکنیم که چه چیزی این نسخه را از نسخههای قبلی متمایز کرده است. از بهبود در مدیریت APIها تا ارتقا در ابزارهای توسعه، همه چیز در لاراول 11 برای راحتتر کردن فرآیند توسعه و ارائه عملکرد بهتر طراحی شده است.
1.نیازمندیهای لاراول 11
برای اجرای لاراول 11، باید مطمئن بشید که سرور و محیط شما با نیازمندیهای جدید لاراول سازگاره. این نیازمندیها به شرح زیر هست:
-
PHP 8.2.0 یا بالاتر
-
cURL نسخه 7.34.0 یا بالاتر
-
Composer نسخه 2.0 یا بالاتر
-
MySQL 5.7 یا MariaDB 10.2
-
Redis نسخه 5.0 یا بالاتر
-
Node.js و NPM (برای کامپایل منابع front-end)
2.تغییرات در ساختار برنامه لاراول 11
لاراول 11 با یک ساختار جدید و جمعوجور برای برنامهها معرفی شده که کار رو برای توسعهدهندهها راحتتر کرده. حالا برنامههای جدید توی این نسخه، فایلهای کمتری مثل Service Providers، Middleware و فایلهای تنظیمات (Configuration Files) دارن.
این یعنی شما با یه محیط تمیزتر و سادهتر روبهرو میشید که توسعه رو سریعتر و بیدردسرتر میکنه. این تغییرات بیشتر برای پروژههای جدید خیلی کاربردیه و نیاز به کلی تنظیمات اولیه رو کمتر میکنه.
حالا اگه قصد دارید از لاراول 10 به لاراول 11 مهاجرت کنید، لازم نیست نگران باشید. پیشنهاد نمیشه ساختار برنامهتون رو عوض کنید، چون لاراول 11 طوری طراحی شده که با ساختار قبلی هم کاملاً سازگاره. پس با خیال راحت میتونید پروژهتون رو ارتقا بدید بدون اینکه وقتتون صرف بازسازی ساختار بشه.
نکته دوستانه: این ساختار جدید برای پروژههایی که تازه میخواید استارت بزنید عالیه، اما اگه پروژهای دارید که از قبل روی نسخههای قبلی ساخته شده، بهتره همون ساختار قبلی رو حفظ کنید.
اگه دوست دارید تغییرات جدید رو یاد بگیرید و با مثالهای کاربردی تمرین کنید، دوره مسترکلاس لاراول 11 میتونه انتخاب فوقالعادهای براتون باشه! 😎
3.تغییرات جدید در فایل bootstrap/app.php در لاراول 11
در لاراول 11، ساختار فایل bootstrap/app.php تغییر کرده و به شکلی سادهتر و مدرنتر طراحی شده تا مدیریت اپلیکیشن و پیکربندیهای مربوط به آن راحتتر و انعطافپذیرتر باشه.
در این نسخه، با استفاده از متدهای زنجیرهای میتونید به راحتی مسیرها، middleware ها، و استثناها (exceptions) رو تنظیم کنید. این به شما اجازه میده که کدهای تنظیمات اپلیکیشن رو به صورت واضح و خوانا بنویسید.
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();
توضیحات:
-
strongApplication::configure:این متد برای پیکربندی مسیر پایه (basePath) استفاده میشه که مسیر اصلی پروژه رو تعیین میکنه. این تغییر باعث میشه که کدها بهطور مرتبتری نوشته بشن و دیگه نیازی به دستکاری دستی مسیرها نباشه.
-
withRouting:این متد به شما این امکان رو میده که مسیرهای مختلف پروژه رو به راحتی تعریف کنید.
- web: مسیر روتینگ وبسایت رو مشخص میکنه (در اینجا مسیر به routes/web.php اشاره میکنه).
- commands: مسیر روتینگ دستورات کنسول رو تعیین میکنه.
- health: این مسیر برای چک کردن وضعیت سلامت اپلیکیشن (health check) استفاده میشه که به طور پیشفرض روی /up تنظیم شده.
-
withMiddleware:این بخش به شما اجازه میده که middleware ها رو به سادگی پیکربندی کنید. به طور پیشفرض، این متد خالیه، اما میتونید به راحتی middleware های مختلف رو اضافه کنید تا درخواستها قبل از رسیدن به کنترلرها پردازش بشن.
-
withExceptions:این متد به شما کمک میکنه که استثناها (exceptions) رو تنظیم کنید. اگر بخواید نحوه مدیریت استثناها رو تغییر بدید، میتونید در اینجا کدهای مخصوص به اون رو بنویسید.
نتیجه:
این تغییرات باعث میشه که فایل app.php سادهتر و خواناتر بشه و همهچیز در یک مکان متمرکز بشه. با این روش، میتونید به راحتی پروژه خودتون رو مدیریت کنید و کدهای پیکربندی رو به شکل بهینهتری بنویسید.
ما در قسمت مدیریت خطاهای API در دوره مسترکلاس َApi نویسی با لاراول 11 برای موبایل و وبسایت این فایل و تغییراتش رو کامل بررسی کردیم. 😎
4.حذف فایلهای پیکربندی در لاراول 11
در لاراول 11، چند تغییر مهم در فایلهای پیکربندی به وجود آمده است که ممکن است شما رو کمی گیج کنه. به طور خاص، برخی از فایلهای پیکربندی که در نسخههای قبلی مانند لاراول 10 وجود داشتند، در این نسخه حذف شدند. این تغییرات در راستای سادهتر کردن ساختار فریمورک و کاهش پیچیدگیها انجام شده. اما نگران نباشید! اگر هنوز به این فایلها نیاز دارید، میتونید دوباره اونها رو منتشر کنید.
در لاراول 11، برخی فایلهای پیکربندی که قبلاً وجود داشتند، دیگه به صورت پیشفرض در پوشه config/قرار ندارند. این فایلها به شرح زیر هستند:
- config/broadcasting.php
- config/cors.php
- config/hashing.php
- config/sanctum.php
- config/view.php
حذف این فایلها به دلیل سادهسازی ساختار پروژه بوده، اما نگران نباشید چون هنوز میتوانید این فایلها رو دوباره به پروژهتون اضافه کنید.
چطور این فایلها رو دوباره منتشر کنیم؟
اگر به هر دلیلی نیاز دارید که این فایلها رو دوباره داشته باشید، به راحتی میتونید با استفاده از دستورات زیر اونها رو منتشر کنید:
-
برای انتشار فایلهای پیکربندی خاص:
php artisan config:publish <name>
به جای<name> اسم فایل پیکربندی رو وارد کنید.
-
برای انتشار همه فایلهای پیکربندی به طور همزمان:
php artisan config:publish --all
با استفاده از این دستورات، میتونید فایلهای پیکربندی مورد نظر رو دوباره به پروژهتون اضافه کنید و تنظیمات دلخواه خودتون رو اعمال کنید.
تغییرات در مقادیر فایلهای موجود
به جز حذف فایلهای پیکربندی، در لاراول 11، برخی از مقادیر داخل فایلهای پیکربندی موجود هم تغییر کرده یا حذف شدهاند. این تغییرات بیشتر برای بهبود عملکرد فریمورک و اتوماسیونهای داخلی خود لاراول صورت گرفته. بنابراین، ممکنه بعضی از مقادیر قدیمی دیگه توی پروژههای جدید موجود نباشند.
پیکربندیهای مرتبط با Sanctum و Broadcasting
اگر پروژه شما به پیکربندیهایی مثل sanctum.php یا broadcasting.phpنیاز داره، میتونید با استفاده از دستورات بالا این فایلها رو دوباره وارد پروژهتون کنید و تنظیمات دلخواهتون رو اعمال کنید. این تغییرات در لاراول 11 به طور پیشفرض حذف شدهاند، اما با دستورات گفتهشده میتونید به راحتی به اونها دسترسی پیدا کنید.
نتیجهگیری
در نهایت، این تغییرات برای سادهتر کردن ساختار لاراول و کاهش تنظیمات اضافی انجام شده. حالا شما میتونید به راحتی فایلهای پیکربندی رو منتشر کنید و اونها رو طبق نیازهای پروژهتون تنظیم کنید. این تغییرات به شما این امکان رو میده که فقط روی تنظیمات مورد نیاز پروژه تمرکز کنید و بقیه موارد رو خود فریمورک بهطور خودکار مدیریت کنه.
ما در پیاده سازی پروژه فروشگاهی در دوره مسترکلاس َApi نویسی با لاراول 11 برای موبایل و وبسایت این فایل ها رو فراخوانی کردیم و ازشون تو پروژه استفاده کردیم. 😎
5.نحوه استفاده از ویژگی Limit Eager Load در لاراول 11
در لاراول 11، یک ویژگی جدید و خیلی کاربردی به فریمورک اضافه شده که بدون نیاز به نصب پکیجهای خارجی، میتونید رکوردهای eager loaded رو محدود کنید. این ویژگی باعث میشه که زمانی که اطلاعات مرتبط با یک مدل رو به صورت eager loading بارگذاری میکنید، بتونید تعداد رکوردهایی که بارگذاری میشن رو محدود کنید. این تغییر واقعاً میتونه در بهبود عملکرد برنامه کمک کنه، مخصوصاً زمانی که دادههای زیادی برای بارگذاری وجود داره و فقط به بخشی از اونها نیاز دارید.
برای استفاده از این قابلیت، فرض کنید که مدل User یک رابطه hasMany با مدل Post داره و شما میخواهید هنگام بارگذاری کاربران، تنها 10 پست آخر هر کاربر رو بارگذاری کنید. به سادگی میتونید از این روش استفاده کنید:
class User extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
$users = User::with(['posts' => function ($query) {
$query->latest()->limit(10);
}])->get();
در اینجا، وقتی که از with برای eager loading استفاده میکنید، با استفاده از یک تابع ناشناس (callback)، میتونید محدودیت تعداد رکوردهایی که باید بارگذاری بشه رو تعیین کنید. در مثال بالا، تنها 10 پست آخر هر کاربر بارگذاری میشه.
پیش از لاراول 11
قبل از اضافه شدن این قابلیت به لاراول 11، برای انجام چنین کاری باید از یک پکیج خارجی به نام Eloquent Eager Limit از Jonas Staudenmeir استفاده میکردید. این پکیج به شما امکان میداد که رکوردهای eager loaded رو محدود کنید، اما حالا این قابلیت به صورت داخلی به لاراول اضافه شده و دیگه نیازی به استفاده از پکیجهای اضافی نیست.
نتیجهگیری
این ویژگی جدید در لاراول 11، به خصوص برای اپلیکیشنهای بزرگ که با دادههای زیادی کار میکنند، یک تغییر مثبت و مهم به حساب میآید. دیگه نیازی به نصب پکیجهای اضافی نیست و میتونید به راحتی رکوردهای eager loadedرو محدود کنید تا عملکرد بهتری داشته باشی
6.API و Broadcasting در لاراول 11: نصب و پیکربندی دستی
در لاراول 11، فایلroutes/api.php به طور پیشفرض وجود نداره و همچنین Sanctum به صورت پیشفرض نصب نمیشه. یعنی برای استفاده از API یا Broadcasting باید خودتون اینها رو نصب کنید.
نصب API
برای فعالسازی API، کافیه این دستور رو اجرا کنید:
php artisan install:api
این دستور فایل routes/api.php رو میسازه و در bootstrap/app.php ثبت میکنه. علاوه بر این، Sanctum رو هم به پروژه اضافه میکنه. بعدش فقط کافیه trait Laravel\Sanctum\HasApiTokens رو به مدل User اضافه کنید تا از قابلیتهای احراز هویت API استفاده کنید.
نصب Broadcasting
برای راهاندازی Broadcasting هم همینطور، باید خودتون این کار رو انجام بدید. دستور زیر رو اجرا کنید:
php artisan install:broadcast
این دستور تمام تنظیمات مورد نیاز برای Broadcasting رو آماده میکنه تا بتونید از Real-time events استفاده کنید.
چرا این تغییرات؟
لاراول 11 یه ساختار سبکتر داره. یعنی خیلی از قابلیتها مثل API و Broadcasting به صورت پیشفرض نصب نمیشن و باید خودتون وقتی بهشون نیاز داشتید، نصبشون کنید. اینطوری پروژههاتون سبکتر میمونه.
نتیجهگیری
در لاراول 11، شما کنترل بیشتری روی نصب و پیکربندی قابلیتها دارید. دیگه نیاز نیست چیزی که استفاده نمیکنید اضافه باشه. فقط وقتی به API یا Broadcasting نیاز دارید، میتونید با یک دستور ساده اونها رو نصب کنید.
اگه دوست دارید تغییرات مربوط یه Api رو یاد بگیرید و با مثالهای کاربردی تمرین کنید، دوره مسترکلاس َApi نویسی با لاراول 11 برای موبایل و وبسایت میتونه انتخاب فوقالعادهای براتون باشه! 😎