کانال آموزشی لاراول pinned «🔐 ورود بدون رمز عبور با Passkeys در لاراول! توسط Spatie آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟ 💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشنهای لاراول…»
کانال آموزشی لاراول
Photo
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول
وقتی داری اپلیکیشن لاراول میسازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی.
👀 مثلاً:
اپلیکیشن چند تیمی ساختی و باید همیشه
یا یه بلاگ داری و مدام باید بررسی کنی پست منتشر شده یا نه (
🤯 تکرار این شرطها هم خستهکنندهست، هم مستعد خطا.
🎯 راه حل: Query Scope
یه راه ساده برای تعریف شرطهای قابل استفاده مجدد توی مدلهات هست.
این شرطها معمولاً بهصورت متد روی مدل (Model) تعریف میشن یا میتونی یه کلاس اختصاصی برایش بسازی.
🧩 دو نوع Scope داریم:
1️⃣ Local Scope ➜ باید دستی توی کوئری صدا زده بشه
2️⃣ Global Scope ➜ بهصورت خودکار روی همه کوئریهای اون مدل اعمال میشه
مثلاً ویژگی
🌿 Local Query Scope
فرض کن یه بلاگ داری با دو صفحه در پنل ادمین:
✅ پستهای منتشر شده
🚧 پستهای منتشر نشده
مدل ما:
ستون زمان انتشار: published_at (nullable)
اگر
اگر null یا در آینده باشه = هنوز منتشر نشده
🔸 کوئری به روش معمول:
🔸 کوئری پستهای منتشر نشده:
🥴 اینا سادهان ولی اگه توی کل اپ تکرار بشن، احتمال خطا بالا میره.
✅ راه حل: تعریف دو
داخل مدل:
🔸 حالا کوئریها خیلی شیک و تمیز میشن:
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
وقتی داری اپلیکیشن لاراول میسازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی.
👀 مثلاً:
اپلیکیشن چند تیمی ساختی و باید همیشه
team_id
کاربر رو توی کوئریها فیلتر کنییا یه بلاگ داری و مدام باید بررسی کنی پست منتشر شده یا نه (
published_at
)🤯 تکرار این شرطها هم خستهکنندهست، هم مستعد خطا.
🎯 راه حل: Query Scope
یه راه ساده برای تعریف شرطهای قابل استفاده مجدد توی مدلهات هست.
این شرطها معمولاً بهصورت متد روی مدل (Model) تعریف میشن یا میتونی یه کلاس اختصاصی برایش بسازی.
🧩 دو نوع Scope داریم:
1️⃣ Local Scope ➜ باید دستی توی کوئری صدا زده بشه
2️⃣ Global Scope ➜ بهصورت خودکار روی همه کوئریهای اون مدل اعمال میشه
مثلاً ویژگی
Soft Delete
خود لاراول از Global Scope
استفاده میکنه!🌿 Local Query Scope
فرض کن یه بلاگ داری با دو صفحه در پنل ادمین:
✅ پستهای منتشر شده
🚧 پستهای منتشر نشده
مدل ما:
App\Models\Article
ستون زمان انتشار: published_at (nullable)
اگر
published_at
در گذشته باشه = منتشر شدهاگر null یا در آینده باشه = هنوز منتشر نشده
🔸 کوئری به روش معمول:
$publishedPosts = Article::query()
->where('published_at', '<=', now())
->get();
🔸 کوئری پستهای منتشر نشده:
$unpublishedPosts = Article::query()
->where(function (Builder $query) {
$query->whereNull('published_at')
->orWhere('published_at', '>', now());
})->get();
🥴 اینا سادهان ولی اگه توی کل اپ تکرار بشن، احتمال خطا بالا میره.
✅ راه حل: تعریف دو
scope
به اسم scopePublished
و scopeNotPublished
داخل مدل:
final class Article extends Model
{
public function scopePublished(Builder $query): Builder
{
return $query->where('published_at', '<=', now());
}
public function scopeNotPublished(Builder $query): Builder
{
return $query->where(function (Builder $query) {
return $query->whereNull('published_at')
->orWhere('published_at', '>', now());
});
}
}
🔸 حالا کوئریها خیلی شیک و تمیز میشن:
$publishedPosts = Article::query()->published()->get();
$unpublishedPosts = Article::query()->notPublished()->get();
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
👌8👍3🔥3🎉1
کانال آموزشی لاراول
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول وقتی داری اپلیکیشن لاراول میسازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی. 👀 مثلاً: اپلیکیشن چند تیمی ساختی و باید همیشه team_id کاربر رو توی کوئریها فیلتر کنی…
📘 بخش دوم / در لاراول Query Scope: یاد بگیر چطور استادش بشی!
🧩 اضافه کردن Global Scope به مدل
دو روش داریم:
1️⃣ با Attribute جدید لاراول:
2️⃣ با متد booted در مدل:
حالا بدون نوشتن where، همیشه فقط مقالات مرتبط با تیم خود کاربر برمیگرده:
😎 Anonymous Global Scope
میتونی بهجای ساختن کلاس، همونجا داخل مدل تعریفش کنی:
🚫 حذف Global Scope
گاهی لازمه Scope رو نادیده بگیری:
🔸 حذف همه Scopeها:
🔸 حذف بعضی Scopeها:
🔸 حذف فقط یکی:
⛔️ توجه: اگه از
🧪 تست کردن Scopeها
✅ تست
1️⃣ تست کن فقط مقالات منتشر شده بیاد
2️⃣ تست کن فقط مقالات منتشر نشده بیاد
🔸 نمونه تست:
🧪 تست کردن در Controller
گاهی لازمه مطمئن شی که Scope توی کنترلر استفاده شده.
مثال:
🔸 تست:
✅ نتیجه نهایی
- حالا دیگه فرق بین Local و Global Query Scope رو میدونی
- یاد گرفتی چطور بسازیشون
- بلدی چطور تستشون کنی
و از همه مهمتر:
🔁 میتونی کدت رو مرتبتر، امنتر و قابل نگهداریتر بنویسی! 😎
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
🧩 اضافه کردن Global Scope به مدل
دو روش داریم:
1️⃣ با Attribute جدید لاراول:
#[ScopedBy(TeamScope::class)]
final class Article extends Model
2️⃣ با متد booted در مدل:
protected static function booted(): void
{
static::addGlobalScope(new TeamScope());
}
حالا بدون نوشتن where، همیشه فقط مقالات مرتبط با تیم خود کاربر برمیگرده:
Article::all(); // فقط برای تیم خودش
😎 Anonymous Global Scope
میتونی بهجای ساختن کلاس، همونجا داخل مدل تعریفش کنی:
static::addGlobalScope('team_scope', function (Builder $builder) {
$builder->where('team_id', Auth::user()->team_id);
});
🚫 حذف Global Scope
گاهی لازمه Scope رو نادیده بگیری:
🔸 حذف همه Scopeها:
Article::query()->withoutGlobalScopes()->get();
🔸 حذف بعضی Scopeها:
->withoutGlobalScopes([
TeamScope::class,
'another_scope',
])
🔸 حذف فقط یکی:
->withoutGlobalScope(TeamScope::class)
⛔️ توجه: اگه از
()DB::table
استفاده کنی، هیچ Global Scope اعمال نمیشه.🧪 تست کردن Scopeها
✅ تست
scopePublished
و scopeNotPublished1️⃣ تست کن فقط مقالات منتشر شده بیاد
2️⃣ تست کن فقط مقالات منتشر نشده بیاد
🔸 نمونه تست:
$this->assertCount(2, $articles);
$this->assertTrue($articles->contains($this->publishedArticles->first()));
🧪 تست کردن در Controller
گاهی لازمه مطمئن شی که Scope توی کنترلر استفاده شده.
مثال:
final class ArticleController extends Controller
{
public function index()
{
return view('articles.index', [
'articles' => Article::all(),
]);
}
}
🔸 تست:
$this->actingAs($user)
->get('/articles')
->assertViewHas(
'articles',
fn (Collection $articles) =>
$articles->pluck('id')->all() === $articlesForTeamOne->pluck('id')->all()
);
✅ نتیجه نهایی
- حالا دیگه فرق بین Local و Global Query Scope رو میدونی
- یاد گرفتی چطور بسازیشون
- بلدی چطور تستشون کنی
و از همه مهمتر:
🔁 میتونی کدت رو مرتبتر، امنتر و قابل نگهداریتر بنویسی! 😎
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
👏8🎉3
کانال آموزشی لاراول
Photo
✨ پاکسازی هوشمند کشهای منقضیشده در لاراول با ابزار Cache Evict
استفاده از کش یکی از روشهای مهم برای افزایش سرعت دریافت دادهها و کاهش فشار روی سرور توی پروژههای واقعی محسوب میشه.
لاراول بهصورت پیشفرض چندتا کشدرایور مثل
📦 اما مشکل زمانی پیش میاد که آیتمهای موقتی زیادی با کلیدهای تصادفی ساخته میشن و اگر به موقع حذف نشن، فضای ذخیرهسازی رو پر میکنن. برای همین، پاکسازی کشهای منقضیشده هر از گاهی کاملاً ضروریه.
🧹 در لاراول میتونی کش رو با این دو روش پاک کنی:
* استفاده از
* یا دستور
⚠️ ولی باید بدونی که این روشها کل کش رو پاک میکنن؛ حتی کشهای سیستمی خود لاراول. این کار ممکنه باعث بشه بعضی فایلها به خاطر تفاوت دسترسی کاربران، دچار مشکل بشن (مثلاً وقتی
❓ برای حل این مشکل، یه پکیج فوقالعاده به اسم Laravel Cache Evict ساخته شده توسط Vincent Wong که فقط آیتمهای منقضیشده رو پاک میکنه — اونم خیلی سبک و سریع، مخصوصاً برای
🛠 روش نصب و استفاده
📥 برای نصب این پکیج از دستور زیر استفاده کن:
▶️ برای پاکسازی کش پیشفرض لاراول:
📂 و اگر خواستی مشخص کنی که دقیقاً کدوم درایور پاک بشه (مثلاً
📚 اگر دلت میخواد بیشتر یاد بگیری یا استراتژیهای پاکسازی دلخواه خودت رو تعریف کنی، حتماً یه نگاهی به صفحهی GitHub این پکیج بنداز.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
استفاده از کش یکی از روشهای مهم برای افزایش سرعت دریافت دادهها و کاهش فشار روی سرور توی پروژههای واقعی محسوب میشه.
لاراول بهصورت پیشفرض چندتا کشدرایور مثل
file
و database
داره که حسابی به درد توسعهدهندهها میخورن.📦 اما مشکل زمانی پیش میاد که آیتمهای موقتی زیادی با کلیدهای تصادفی ساخته میشن و اگر به موقع حذف نشن، فضای ذخیرهسازی رو پر میکنن. برای همین، پاکسازی کشهای منقضیشده هر از گاهی کاملاً ضروریه.
🧹 در لاراول میتونی کش رو با این دو روش پاک کنی:
* استفاده از
()Cache::flush
* یا دستور
php artisan cache:clear
⚠️ ولی باید بدونی که این روشها کل کش رو پاک میکنن؛ حتی کشهای سیستمی خود لاراول. این کار ممکنه باعث بشه بعضی فایلها به خاطر تفاوت دسترسی کاربران، دچار مشکل بشن (مثلاً وقتی
/bootstrap/cache
مال یه کاربره و کش رو کاربر دیگه ساخته).❓ برای حل این مشکل، یه پکیج فوقالعاده به اسم Laravel Cache Evict ساخته شده توسط Vincent Wong که فقط آیتمهای منقضیشده رو پاک میکنه — اونم خیلی سبک و سریع، مخصوصاً برای
database cache
بهصورت non-blocking.🛠 روش نصب و استفاده
📥 برای نصب این پکیج از دستور زیر استفاده کن:
composer require vectorial1024/laravel-cache-evict
▶️ برای پاکسازی کش پیشفرض لاراول:
php artisan cache:evict
📂 و اگر خواستی مشخص کنی که دقیقاً کدوم درایور پاک بشه (مثلاً
file
):php artisan cache:evict file
📚 اگر دلت میخواد بیشتر یاد بگیری یا استراتژیهای پاکسازی دلخواه خودت رو تعریف کنی، حتماً یه نگاهی به صفحهی GitHub این پکیج بنداز.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
GitHub
GitHub - Vectorial1024/laravel-cache-evict: Efficiently remove expired cache data in Laravel.
Efficiently remove expired cache data in Laravel. Contribute to Vectorial1024/laravel-cache-evict development by creating an account on GitHub.
👍7👏1
کانال آموزشی لاراول
Photo
🤖 اتصال Laravel به دنیای مدلهای زبانی بزرگ با OpenRouter
پکیج Laravel OpenRouter بهت این امکان رو میده که خیلی راحت و سریع، سرویس OpenRouter رو به اپلیکیشن Laravel خودت وصل کنی.
🔌 در واقع OpenRouter یه رابط یکپارچه برای کار با مدلهای زبانی بزرگ (LLMs) هست. یعنی با استفاده از فقط یه API، میتونی به چندین مدل مختلف هوش مصنوعی دسترسی داشته باشی — بدون اینکه بخوای برای هر کدوم جداگانه تنظیمات پیچیده انجام بدی.
🧠 مثال ساده استفاده:
🔁 اینجا از Facade پکیج استفاده شده، اما این پکیج از streaming chat هم پشتیبانی میکنه. یعنی میتونی خروجی مدل رو بهصورت زنده و مرحلهبهمرحله دریافت کنی — مخصوصاً وقتی میخوای یه رابط کاربری تعاملی بسازی.
🌊 مثال استریم کردن پاسخ:
📚 برای اطلاعات بیشتر، نصب کامل، و دیدن سورسکد این پکیج، میتونی به صفحه GitHubش سر بزنی. همچنین برای شروع کار با OpenRouter، یه Quickstart Guide (راهنمای سریع شروع) هم براش آماده شده.
🛠 دستور نصب:
اگر خواستی با مدلهای هوش مصنوعی مختلف مثل GPT، Claude، Mistral و ... توی اپلیکیشن لاراولیت تعامل داشته باشی، این پکیج یکی از راحتترین و حرفهایترین راههاست 💡
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
GitHub
پکیج Laravel OpenRouter بهت این امکان رو میده که خیلی راحت و سریع، سرویس OpenRouter رو به اپلیکیشن Laravel خودت وصل کنی.
🔌 در واقع OpenRouter یه رابط یکپارچه برای کار با مدلهای زبانی بزرگ (LLMs) هست. یعنی با استفاده از فقط یه API، میتونی به چندین مدل مختلف هوش مصنوعی دسترسی داشته باشی — بدون اینکه بخوای برای هر کدوم جداگانه تنظیمات پیچیده انجام بدی.
🧠 مثال ساده استفاده:
// متنی که میخوای به عنوان درخواست به مدل بدی
$content = 'Tell me a story about a rogue AI that falls in love with its creator.';
// انتخاب مدل دلخواه از لیست مدلهای OpenRouter
$model = 'mistralai/mistral-7b-instruct:free';
// ساختار درخواست
$chatData = new ChatData(
messages: [
new MessageData(
content: $content,
role: RoleType::USER,
),
],
model: $model,
max_tokens: 100, // (میتونی این مقدار رو به دلخواه تنظیم کنی)
);
// ارسال درخواست و دریافت پاسخ
$chatResponse = LaravelOpenRouter::chatRequest($chatData);
🔁 اینجا از Facade پکیج استفاده شده، اما این پکیج از streaming chat هم پشتیبانی میکنه. یعنی میتونی خروجی مدل رو بهصورت زنده و مرحلهبهمرحله دریافت کنی — مخصوصاً وقتی میخوای یه رابط کاربری تعاملی بسازی.
🌊 مثال استریم کردن پاسخ:
$promise = LaravelOpenRouter::chatStreamRequest($chatData);
$stream = $promise->wait(); // خروجی به صورت GuzzleHttp\Psr7\Stream
while (! $stream->eof()) {
$rawResponse = $stream->read(1024);
// میتونی خروجی خام رو فیلتر و تبدیل به فرمت استاندارد پاسخ کنی
$response = LaravelOpenRouter::filterStreamingResponse($rawResponse);
}
📚 برای اطلاعات بیشتر، نصب کامل، و دیدن سورسکد این پکیج، میتونی به صفحه GitHubش سر بزنی. همچنین برای شروع کار با OpenRouter، یه Quickstart Guide (راهنمای سریع شروع) هم براش آماده شده.
🛠 دستور نصب:
composer require moe-mizrak/laravel-openrouter
php artisan vendor:publish --tag=laravel-openrouter
اگر خواستی با مدلهای هوش مصنوعی مختلف مثل GPT، Claude، Mistral و ... توی اپلیکیشن لاراولیت تعامل داشته باشی، این پکیج یکی از راحتترین و حرفهایترین راههاست 💡
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
GitHub
GitHub
GitHub - moe-mizrak/laravel-openrouter: Laravel package for OpenRouter (A unified interface for LLMs)
Laravel package for OpenRouter (A unified interface for LLMs) - moe-mizrak/laravel-openrouter
👏7❤4👍1
کانال آموزشی لاراول
Photo
💬 ویجت Volet : دریافت بازخورد کاربر برای Laravel
گرفتن بازخورد از کاربران یکی از کلیدیترین روشها برای بهبود تجربه کاربری و ارتقای کیفیت اپلیکیشنهاست. پکیج Volet که توسط Clément Rigo برای لاراول ساخته شده، یه راه حل ساده و قابل سفارشیسازی برای اضافه کردن ویجت بازخورد به اپلیکیشن Laravel شماست.
🪄 در اصل Volet یه پنل بازشوئه که با کلیک روی یه دکمه شناور باز میشه. داخل اون پنل، خودت انتخاب میکنی که به کاربرات چه گزینههایی بدی: فرم ساده؟ چتبات؟ یا هر چیز دیگهای!
🌟 ویژگیهای اصلی:
🎨 تم کاملاً قابل سفارشیسازی با استفاده از CSS Variables یا حتی CSS اختصاصی خودت
🔌 سیستم قابلیتهای قابل توسعه (feature system)
💌 جمعآوری پیامهای بازخورد به صورت پیشفرض
* 🧩 ادغام ساده با Laravel
* ⚙️ ساختهشده با VueJS
* 🛠 امکان ساخت قابلیتهای اختصاصی یا نصب قابلیتهای ساختهشده توسط دیگران
⚙️ نصب و راهاندازی:
برای نصب پکیج از دستور زیر استفاده کن:
بعد، فایلهای assets مربوط به پکیج رو منتشر کن:
چون Volet به صورت پیشفرض قابلیت جمعآوری پیامهای بازخورد رو داره، باید migrationها رو هم منتشر و اجرا کنی:
🔧 حالا توی فایل قالب Blade باید این دو دستور رو اضافه کنی:
* داخل تگ head
* قبل از بسته شدن تگ body
📋 یک نکته برای کاربران Filament
اگر از Filament استفاده میکنی و میخوای یه صفحه ساده برای نمایش پیامهای Volet توی پنل Filament داشته باشی، میتونی افزونه Volet Filament plugin رو نصب کنی.
🧩 توسعه قابلیتهای دلخواه
معماری Volet طوری طراحی شده که بتونی خیلی راحت قابلیتهای سفارشی خودت رو توسعه بدی. فقط کافیه کلاس
مثلاً یکی از قابلیتهای سفارشی معروف، Volet Feature Board هست.
📚 برای اطلاعات بیشتر، نحوه ساخت قابلیتهای جدید، و دیدن سورسکد، حتماً به صفحهی GitHub این پکیج سر بزن.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
گرفتن بازخورد از کاربران یکی از کلیدیترین روشها برای بهبود تجربه کاربری و ارتقای کیفیت اپلیکیشنهاست. پکیج Volet که توسط Clément Rigo برای لاراول ساخته شده، یه راه حل ساده و قابل سفارشیسازی برای اضافه کردن ویجت بازخورد به اپلیکیشن Laravel شماست.
🪄 در اصل Volet یه پنل بازشوئه که با کلیک روی یه دکمه شناور باز میشه. داخل اون پنل، خودت انتخاب میکنی که به کاربرات چه گزینههایی بدی: فرم ساده؟ چتبات؟ یا هر چیز دیگهای!
🌟 ویژگیهای اصلی:
🎨 تم کاملاً قابل سفارشیسازی با استفاده از CSS Variables یا حتی CSS اختصاصی خودت
🔌 سیستم قابلیتهای قابل توسعه (feature system)
💌 جمعآوری پیامهای بازخورد به صورت پیشفرض
* 🧩 ادغام ساده با Laravel
* ⚙️ ساختهشده با VueJS
* 🛠 امکان ساخت قابلیتهای اختصاصی یا نصب قابلیتهای ساختهشده توسط دیگران
⚙️ نصب و راهاندازی:
برای نصب پکیج از دستور زیر استفاده کن:
composer require mydnic/volet
بعد، فایلهای assets مربوط به پکیج رو منتشر کن:
php artisan vendor:publish --tag="volet-assets" --force
چون Volet به صورت پیشفرض قابلیت جمعآوری پیامهای بازخورد رو داره، باید migrationها رو هم منتشر و اجرا کنی:
php artisan vendor:publish --tag="volet-migrations"
php artisan migrate
🔧 حالا توی فایل قالب Blade باید این دو دستور رو اضافه کنی:
* داخل تگ head
@voletStyles
* قبل از بسته شدن تگ body
@volet
📋 یک نکته برای کاربران Filament
اگر از Filament استفاده میکنی و میخوای یه صفحه ساده برای نمایش پیامهای Volet توی پنل Filament داشته باشی، میتونی افزونه Volet Filament plugin رو نصب کنی.
🧩 توسعه قابلیتهای دلخواه
معماری Volet طوری طراحی شده که بتونی خیلی راحت قابلیتهای سفارشی خودت رو توسعه بدی. فقط کافیه کلاس
BaseFeature
رو گسترش بدی یا از قابلیتهایی که دیگران ساختن استفاده کنی.مثلاً یکی از قابلیتهای سفارشی معروف، Volet Feature Board هست.
📚 برای اطلاعات بیشتر، نحوه ساخت قابلیتهای جدید، و دیدن سورسکد، حتماً به صفحهی GitHub این پکیج سر بزن.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
GitHub
GitHub - mydnic/volet-feedback-messages-filament-plugin: A Filament plugin to display Volet Feedback Messages
A Filament plugin to display Volet Feedback Messages - mydnic/volet-feedback-messages-filament-plugin
❤6
کانال آموزشی لاراول
Photo
🚀قابلیت پنهان در لاراول 12 که شاید ازشون خبر نداشتی - بخش اول
نسخهی ۱۲ لاراول که در فوریه ۲۰۲۵ منتشر شد، فقط یه آپدیت نگهدارنده نبود. این نسخه با هدف بهبود تجربهی برنامهنویس، قابلیتهای جدیدی رو اضافه کرده که خیلی از اونها شاید توی هیاهوی بروزرسانیهای پکیج و پایداری، گم شده باشن.
در ادامه، با چند ویژگی کمتر شناختهشده ولی خیلی کاربردی در Laravel 12 آشنا میشی — همراه با مثالهای کدی که بتونی همین امروز ازشون استفاده کنی:
1️⃣ متد
📏 قبلاً برای ساخت یه رنج با گام مشخص باید دستی حلقه میزدی. حالا با پارامتر
💡 یعنی دیگه نیازی به حلقهی سفارشی یا توابع اضافی برای ساختن دنبالهها نیست!
2️⃣ پشتیبانی داخلی از UUID نسخه ۷
🆔 از این نسخه به بعد، وقتی از trait به نام
⏱️ UUIDv7 مرتب بر اساس زمانه (time-ordered)، که باعث میشه در دیتابیسهای بزرگ، ایندکسها سریعتر و مرتبتر کار کنن — مخصوصاً وقتی کوئریها زیادن.
3️⃣ در AuthKit داخلی برای ورود اجتماعی و Passkey
🔐 حالا Laravel 12 بهصورت پیشفرض با WorkOS AuthKit هماهنگه — مخصوصاً اگر از Jetstream یا Breeze (React, Vue, یا Livewire) استفاده کنی.
پشتیبانی کامل از:
* ورود با گوگل، گیتهاب و شبکههای اجتماعی دیگه
* احراز هویت با Passkey (مثل WebAuthn و FIDO2)
* SSO سازمانی برای شرکتها
✅ دیگه فقط با چند کامند ساده میتونی احراز هویت مدرن و حرفهای راه بندازی.
4️⃣ پشتیبانی قوی و رسمی از Pest PHP
🧪 در Pest یه فریمورک تستنویسیه که سادهتر، تمیزتر و خواناتر از PHPUnit کدنویسی میکنه — حالا در Laravel 12 بهصورت کامل پشتیبانی میشه.
مثال:
اینطوری هم تست مینویسی، هم از قدرت کامل سیستم تست لاراول استفاده میکنی، بدون پیچیدگی اضافه.
5️⃣ پشتیبانی اختصاصی از MariaDB در Artisan
🐬 حالا
👥 این ویژگی برای تیمهایی که از MariaDB در محیط واقعی استفاده میکنن خیلی به درد بخوره.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
نسخهی ۱۲ لاراول که در فوریه ۲۰۲۵ منتشر شد، فقط یه آپدیت نگهدارنده نبود. این نسخه با هدف بهبود تجربهی برنامهنویس، قابلیتهای جدیدی رو اضافه کرده که خیلی از اونها شاید توی هیاهوی بروزرسانیهای پکیج و پایداری، گم شده باشن.
در ادامه، با چند ویژگی کمتر شناختهشده ولی خیلی کاربردی در Laravel 12 آشنا میشی — همراه با مثالهای کدی که بتونی همین امروز ازشون استفاده کنی:
1️⃣ متد
Collection::range
حالا از پارامتر سوم (گام) پشتیبانی میکنه📏 قبلاً برای ساخت یه رنج با گام مشخص باید دستی حلقه میزدی. حالا با پارامتر
step
میتونی مستقیم رنج با گام دلخواه بسازی:$numbers = collect()->range(1, 10, 2);
// خروجی: [1, 3, 5, 7, 9]
💡 یعنی دیگه نیازی به حلقهی سفارشی یا توابع اضافی برای ساختن دنبالهها نیست!
2️⃣ پشتیبانی داخلی از UUID نسخه ۷
🆔 از این نسخه به بعد، وقتی از trait به نام
HasUuids
در مدلهات استفاده کنی، UUIDهای نسخه ۷ بهصورت پیشفرض تولید میشن.use Illuminate\Database\Eloquent\Concerns\HasUuids;
class Order extends Model
{
use HasUuids;
}
⏱️ UUIDv7 مرتب بر اساس زمانه (time-ordered)، که باعث میشه در دیتابیسهای بزرگ، ایندکسها سریعتر و مرتبتر کار کنن — مخصوصاً وقتی کوئریها زیادن.
3️⃣ در AuthKit داخلی برای ورود اجتماعی و Passkey
🔐 حالا Laravel 12 بهصورت پیشفرض با WorkOS AuthKit هماهنگه — مخصوصاً اگر از Jetstream یا Breeze (React, Vue, یا Livewire) استفاده کنی.
پشتیبانی کامل از:
* ورود با گوگل، گیتهاب و شبکههای اجتماعی دیگه
* احراز هویت با Passkey (مثل WebAuthn و FIDO2)
* SSO سازمانی برای شرکتها
✅ دیگه فقط با چند کامند ساده میتونی احراز هویت مدرن و حرفهای راه بندازی.
4️⃣ پشتیبانی قوی و رسمی از Pest PHP
🧪 در Pest یه فریمورک تستنویسیه که سادهتر، تمیزتر و خواناتر از PHPUnit کدنویسی میکنه — حالا در Laravel 12 بهصورت کامل پشتیبانی میشه.
مثال:
it('creates a new user', function () {
$response = $this->post('/register', [
'name' => 'John',
'email' => 'john@example.com',
'password' => 'secret',
]);
$response->assertStatus(302);
});
اینطوری هم تست مینویسی، هم از قدرت کامل سیستم تست لاراول استفاده میکنی، بدون پیچیدگی اضافه.
5️⃣ پشتیبانی اختصاصی از MariaDB در Artisan
🐬 حالا
Artisan
مستقیماً MariaDB رو بهعنوان درایور دیتابیس میشناسه. یعنی دیگه نیازی به workaround یا ترفندهای خاص نداری.php artisan migrate --database=mariadb
👥 این ویژگی برای تیمهایی که از MariaDB در محیط واقعی استفاده میکنن خیلی به درد بخوره.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤8👍3🔥1🤩1
کانال آموزشی لاراول
Photo
✨ مسیر تبدیل شدن به یک برنامهنویس ارشد لاراول: نقشه راه و آزمونهای واقعی دنیای کار
در دنیای همیشه در حال تغییر برنامهنویسی وب، اینکه فقط لاراول یا حتی PHP را خوب بلد باشی کافی نیست. برای اینکه یک Laravel Lead Developer بشی، باید چند قدم جلوتر بری: طراحی معماری سیستمها، ساخت APIهای قوی، هدایت تیم، و بالا نگه داشتن کیفیت کد.
این راهنما بهت کمک میکنه مسیر رشد رو مرحلهبهمرحله طی کنی و به برنامهنویسی تبدیل بشی که آمادهی رهبری تیمهای توسعهست و میتونه اپلیکیشنهایی بسازه که هم مقیاسپذیر باشن و هم قابلاعتماد.
📚 نقشهی راه مرحلهبهمرحله برای تبدیل شدن به Laravel Lead Developer
1️⃣. پایهی فنی رو محکم کن
✅ مهارتهای پیشرفته PHP
* برنامهنویسی شیگرا رو بهخوبی یاد بگیر، مخصوصاً مفاهیمی مثل traits، namespaces، و design patternها.
* با اصول SOLID کدی بنویس که تمیز، قابلنگهداری و حرفهای باشه.
* ویژگیهای نسخههای جدید PHP 8 رو یاد بگیر مثل match، union types و attributes.
* روشهای پروفایلگیری و دیباگ کردن رو بلد باش؛ مثلاً با ابزارهایی مثل Xdebug و Blackfire.
منبع پیشنهادی: PHP: The Right Way
✅ تسلط بر لاراول
* با routing، middleware، و Service Container راحت کار کن.
* از Eloquent ORM برای کار با دیتابیس به شکلی تمیز و ساده استفاده کن.
* صفها (queues)، وظایف (jobs)، و broadcasting رو یاد بگیر تا اپلیکیشنت به شکل غیربلوکه اجرا بشه.
* احراز هویت با Sanctum یا Passport رو بلد باش.
* با ابزارهای پیشرفتهی لاراول مثل Horizon، Octane، Telescope و Nova آشنا شو.
2️⃣. طراحی معماری و ساختار سیستمها
✅ طراحی نرمافزار
* از Domain-Driven Design (DDD) استفاده کن تا پروژههات ساختاریافته باشن.
* معماریهای مدرن مثل Hexagonal Architecture یا CQRS/Event Sourcing رو بررسی کن.
* فرق بین microservices و modular monoliths رو بفهم و بسته به پروژه تصمیم بگیر.
✅ بهینهسازی دیتابیس
* ایندکسگذاری، بهینهسازی کوئریها و استفاده از EXPLAIN رو یاد بگیر.
* با Redis کش کردن دادهها رو انجام بده.
✅ DevOps و بهبود عملکرد
* از Docker و Laravel Sail برای توسعهی محلی استفاده کن.
* خط لولههای CI/CD رو با GitHub Actions یا GitLab CI راهاندازی کن.
* سلامت اپ رو با ابزارهایی مثل Sentry، Blackfire، و Telescope بررسی کن.
3️⃣. رهبری و هدایت تیم
برنامهنویس ارشد فقط کدنویس نیست. باید بلد باشی:
* کد دیگران رو بررسی (Code Review) کنی و بازخورد مفید بدی.
* به برنامهنویسهای تازهکار آموزش بدی.
* با متدولوژیهای Agile کار کنی.
* امنیت رو جدی بگیری؛ با OWASP و بهترین روشهای امنیتی لاراول.
🔮 آزمونهای فنی شبیه به دنیای واقعی
⚙️ چالش طراحی API
* یک REST API برای ابزار مدیریت پروژه با لاراول بساز.
* از Sanctum برای احراز هویت استفاده کن.
* عملیات CRUD برای پروژهها و وظایف پیادهسازی کن.
* ارتباط بین مدلها، Policyها و تستها رو هم در نظر بگیر.
⚙️ بازسازی معماری یک کد قدیمی
* پروژهی لاراول قدیمی رو بازسازی کن.
*مفاهیم SOLID رو پیاده کن، سرویسها رو جدا کن، و Repository pattern رو استفاده کن.
⚙️ بهینهسازی عملکرد و کوئریها
* با دیتاستهای بزرگ کار کن.
* کوئریهای کند رو تحلیل کن، ایندکسگذاری و کش رو اجرا کن.
* اگر خواستی، از Laravel Scout هم استفاده کن.
⚙️ راهاندازی DevOps
* اپ لاراول رو Dockerize کن.
* در واقع GitHub Actions رو برای CI راهاندازی کن.
* اگر خواستی، پروژه رو روی یک سرویس ابری هم منتشر کن.
⚙️ بررسی کد (Code Review)
* یک pull request رو بررسی کن.
* روی خوانایی، تستها، و امنیت تمرکز کن.
📆 سوالات نمونه برای مصاحبه
* چطور یک اپلیکیشن چند مستاجره (multi-tenant) با لاراول طراحی میکنی؟
* مزایا و معایب Eloquent ORM چیه؟
* چه زمانی از Jobs بهجای Events استفاده میکنی؟
* اگر در لاراول دچار circular dependency شدی، چطور حلش میکنی؟
* چطور سیستم صفها (queue) رو مقیاسپذیر میکنی وقتی میلیونها کار قراره انجام بشه؟
🌟 ابزارهایی که هر Laravel Lead باید بلد باشه:
این بخش میتونه بسته به پروژهها و ترجیحات تیم متنوع باشه، ولی ابزارهای مثل Telescope، Horizon، Sentry، Scout، Octane و غیره جزو پایهها هستن.
📄 حرف آخر
برنامهنویس ارشد بودن فقط به دستور زبان و سینتکس نیست. یعنی بلد باشی یک سیستم پایدار طراحی کنی، تیم رو راهنمایی کنی، عملکرد پروژه رو بالا ببری و محصولی بسازی که قابلیت رشد و گسترش داشته باشه.
این نقشهی راه و تمرینهایی که معرفی شد، کمکت میکنن تا چند قدم به جلو بری و با اعتمادبهنفس پروژهها رو رهبری کنی.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
در دنیای همیشه در حال تغییر برنامهنویسی وب، اینکه فقط لاراول یا حتی PHP را خوب بلد باشی کافی نیست. برای اینکه یک Laravel Lead Developer بشی، باید چند قدم جلوتر بری: طراحی معماری سیستمها، ساخت APIهای قوی، هدایت تیم، و بالا نگه داشتن کیفیت کد.
این راهنما بهت کمک میکنه مسیر رشد رو مرحلهبهمرحله طی کنی و به برنامهنویسی تبدیل بشی که آمادهی رهبری تیمهای توسعهست و میتونه اپلیکیشنهایی بسازه که هم مقیاسپذیر باشن و هم قابلاعتماد.
📚 نقشهی راه مرحلهبهمرحله برای تبدیل شدن به Laravel Lead Developer
1️⃣. پایهی فنی رو محکم کن
✅ مهارتهای پیشرفته PHP
* برنامهنویسی شیگرا رو بهخوبی یاد بگیر، مخصوصاً مفاهیمی مثل traits، namespaces، و design patternها.
* با اصول SOLID کدی بنویس که تمیز، قابلنگهداری و حرفهای باشه.
* ویژگیهای نسخههای جدید PHP 8 رو یاد بگیر مثل match، union types و attributes.
* روشهای پروفایلگیری و دیباگ کردن رو بلد باش؛ مثلاً با ابزارهایی مثل Xdebug و Blackfire.
منبع پیشنهادی: PHP: The Right Way
✅ تسلط بر لاراول
* با routing، middleware، و Service Container راحت کار کن.
* از Eloquent ORM برای کار با دیتابیس به شکلی تمیز و ساده استفاده کن.
* صفها (queues)، وظایف (jobs)، و broadcasting رو یاد بگیر تا اپلیکیشنت به شکل غیربلوکه اجرا بشه.
* احراز هویت با Sanctum یا Passport رو بلد باش.
* با ابزارهای پیشرفتهی لاراول مثل Horizon، Octane، Telescope و Nova آشنا شو.
2️⃣. طراحی معماری و ساختار سیستمها
✅ طراحی نرمافزار
* از Domain-Driven Design (DDD) استفاده کن تا پروژههات ساختاریافته باشن.
* معماریهای مدرن مثل Hexagonal Architecture یا CQRS/Event Sourcing رو بررسی کن.
* فرق بین microservices و modular monoliths رو بفهم و بسته به پروژه تصمیم بگیر.
✅ بهینهسازی دیتابیس
* ایندکسگذاری، بهینهسازی کوئریها و استفاده از EXPLAIN رو یاد بگیر.
* با Redis کش کردن دادهها رو انجام بده.
✅ DevOps و بهبود عملکرد
* از Docker و Laravel Sail برای توسعهی محلی استفاده کن.
* خط لولههای CI/CD رو با GitHub Actions یا GitLab CI راهاندازی کن.
* سلامت اپ رو با ابزارهایی مثل Sentry، Blackfire، و Telescope بررسی کن.
3️⃣. رهبری و هدایت تیم
برنامهنویس ارشد فقط کدنویس نیست. باید بلد باشی:
* کد دیگران رو بررسی (Code Review) کنی و بازخورد مفید بدی.
* به برنامهنویسهای تازهکار آموزش بدی.
* با متدولوژیهای Agile کار کنی.
* امنیت رو جدی بگیری؛ با OWASP و بهترین روشهای امنیتی لاراول.
🔮 آزمونهای فنی شبیه به دنیای واقعی
⚙️ چالش طراحی API
* یک REST API برای ابزار مدیریت پروژه با لاراول بساز.
* از Sanctum برای احراز هویت استفاده کن.
* عملیات CRUD برای پروژهها و وظایف پیادهسازی کن.
* ارتباط بین مدلها، Policyها و تستها رو هم در نظر بگیر.
⚙️ بازسازی معماری یک کد قدیمی
* پروژهی لاراول قدیمی رو بازسازی کن.
*مفاهیم SOLID رو پیاده کن، سرویسها رو جدا کن، و Repository pattern رو استفاده کن.
⚙️ بهینهسازی عملکرد و کوئریها
* با دیتاستهای بزرگ کار کن.
* کوئریهای کند رو تحلیل کن، ایندکسگذاری و کش رو اجرا کن.
* اگر خواستی، از Laravel Scout هم استفاده کن.
⚙️ راهاندازی DevOps
* اپ لاراول رو Dockerize کن.
* در واقع GitHub Actions رو برای CI راهاندازی کن.
* اگر خواستی، پروژه رو روی یک سرویس ابری هم منتشر کن.
⚙️ بررسی کد (Code Review)
* یک pull request رو بررسی کن.
* روی خوانایی، تستها، و امنیت تمرکز کن.
📆 سوالات نمونه برای مصاحبه
* چطور یک اپلیکیشن چند مستاجره (multi-tenant) با لاراول طراحی میکنی؟
* مزایا و معایب Eloquent ORM چیه؟
* چه زمانی از Jobs بهجای Events استفاده میکنی؟
* اگر در لاراول دچار circular dependency شدی، چطور حلش میکنی؟
* چطور سیستم صفها (queue) رو مقیاسپذیر میکنی وقتی میلیونها کار قراره انجام بشه؟
🌟 ابزارهایی که هر Laravel Lead باید بلد باشه:
این بخش میتونه بسته به پروژهها و ترجیحات تیم متنوع باشه، ولی ابزارهای مثل Telescope، Horizon، Sentry، Scout، Octane و غیره جزو پایهها هستن.
📄 حرف آخر
برنامهنویس ارشد بودن فقط به دستور زبان و سینتکس نیست. یعنی بلد باشی یک سیستم پایدار طراحی کنی، تیم رو راهنمایی کنی، عملکرد پروژه رو بالا ببری و محصولی بسازی که قابلیت رشد و گسترش داشته باشه.
این نقشهی راه و تمرینهایی که معرفی شد، کمکت میکنن تا چند قدم به جلو بری و با اعتمادبهنفس پروژهها رو رهبری کنی.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤12👍2
کانال آموزشی لاراول pinned «✨ مسیر تبدیل شدن به یک برنامهنویس ارشد لاراول: نقشه راه و آزمونهای واقعی دنیای کار در دنیای همیشه در حال تغییر برنامهنویسی وب، اینکه فقط لاراول یا حتی PHP را خوب بلد باشی کافی نیست. برای اینکه یک Laravel Lead Developer بشی، باید چند قدم جلوتر بری: طراحی…»
🎬 قسمت جدید از فصل سوم دوره هوش مصنوعی منتشر شد!
این قسمت یه نقطهی عطفه!
🔥 اگه فکر میکنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جملهسازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع میشه!
بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش نده ! واقعاً درک عمیق مدلهای زبانی و مسیر حرفهای شدن توی AI
📌 با سادهترین و شیرینترین توضیح ممکن، مفهوم Token برات جا میافته؛
طوری که بعدش بگی: «آهااا! بالاخره گرفتم!» 😄
https://www.youtube.com/watch?v=ZGqCPhZKlp0
این قسمت یه نقطهی عطفه!
🔥 اگه فکر میکنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جملهسازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع میشه!
بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش نده ! واقعاً درک عمیق مدلهای زبانی و مسیر حرفهای شدن توی AI
📌 با سادهترین و شیرینترین توضیح ممکن، مفهوم Token برات جا میافته؛
طوری که بعدش بگی: «آهااا! بالاخره گرفتم!» 😄
https://www.youtube.com/watch?v=ZGqCPhZKlp0
YouTube
از کلمه تا کد: راز شروع درک زبان توسط هوش مصنوعی
از کلمه تا کد: راز شروع درک زبان توسط هوش مصنوعی
From Words to Codes: The Secret of How AI Starts Understanding Language
شروع فهمیدن برای ماشینها: چرا Tokenization اولین قدمه؟
سلام!
من ابراهیم هستم به همراه NEO از کانال PapiDon State 👋
توی این قسمت از…
From Words to Codes: The Secret of How AI Starts Understanding Language
شروع فهمیدن برای ماشینها: چرا Tokenization اولین قدمه؟
سلام!
من ابراهیم هستم به همراه NEO از کانال PapiDon State 👋
توی این قسمت از…
❤3👏2
کانال آموزشی لاراول pinned «🎬 قسمت جدید از فصل سوم دوره هوش مصنوعی منتشر شد! این قسمت یه نقطهی عطفه! 🔥 اگه فکر میکنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جملهسازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع میشه! بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش…»
کانال آموزشی لاراول
Photo
🚀 Livewire 4: نسل جدید کامپوننتهای PHP در Laravel
در Laracon امسال، Caleb Porzio از Livewire 4 رونمایی کرد؛ نسخهای که سه روش پراکندهٔ ساخت کامپوننتها (سنتی، Volt فانکشنال، Volt کلاسمحور) را یکپارچه کرده، سرعت را بالا برده و تجربه توسعهدهنده را ارتقاء داده.
ویژگیهای کلیدی و نمونه کد:
🔹 کامپوننتهای تکفایلی
با دستور:
یک کامپوننت کلاسمحور تکفایلی میسازد که HTML، PHP و JavaScript را کنار هم دارد:
🔹 داخلی JavaScript
بدون نیاز به
🔹Interceptors
مدیریت اجرای متدها قبل از اجرا:
🔹 کامپوننتهای چندفایلی (MFC)
با:
سه فایل
ساختار پوشههای جدید:
*
*
*
ویژگیهای PHP 8.4 در Livewire 4:
Setter/Getter برای کنترل و محاسبه:
کش داخلی در property hooks:
بهبود UI و تجربه کاربری:
Click Me Load More State خودکار:
Slots همانند Blade:
wire\:ref برای ارتباط مستقیم بین کامپوننتها:
Blaze — بهینهسازی Blade
پیشپردازش بخشهای ثابت برای افزایش سرعت:
نصب:
Islands Architecture
رندر فقط بخشهای لازم:
بارگذاری تنبل با Placeholder:
اسکرول بینهایت بدون JS:
Polling دورهای:
جمعبندی:
Livewire 4 با کامپوننتهای یکپارچه، Blaze، Islands و پشتیبانی از **PHP 8.4**، توسعه در Laravel را سریعتر، سادهتر و لذتبخشتر کرده. ساخت اپهای تعاملی با عملکرد بالا حالا از همیشه راحتتر است.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
در Laracon امسال، Caleb Porzio از Livewire 4 رونمایی کرد؛ نسخهای که سه روش پراکندهٔ ساخت کامپوننتها (سنتی، Volt فانکشنال، Volt کلاسمحور) را یکپارچه کرده، سرعت را بالا برده و تجربه توسعهدهنده را ارتقاء داده.
ویژگیهای کلیدی و نمونه کد:
🔹 کامپوننتهای تکفایلی
با دستور:
php artisan make:livewire counter
یک کامپوننت کلاسمحور تکفایلی میسازد که HTML، PHP و JavaScript را کنار هم دارد:
new class extends Component {
public $count = 1;
public function increment() { $this->count++; }
public function decrement() { $this->count--; }
};
<div>
<h1>{{ $count }}</h1>
<button wire:click="increment">+</button>
<button wire:click="decrement">-</button>
</div>
🔹 داخلی JavaScript
بدون نیاز به
@script`، با `this.
به state دسترسی داری:<script>
this.watch('count', value => console.log('Count:', value));
</script>
🔹Interceptors
مدیریت اجرای متدها قبل از اجرا:
this.intercept('increment', ({ proceed, cancel }) => {
if (confirm('Are you sure?')) proceed();
else cancel();
});
🔹 کامپوننتهای چندفایلی (MFC)
با:
php artisan make:livewire counter --mfc
سه فایل
PHP`، `Blade
و JS
مجزا ساخته میشود.ساختار پوشههای جدید:
*
resources/views/components/
→ همه کامپوننتها*
resources/views/pages/
→ صفحات*
resources/views/layouts/
→ قالبهاویژگیهای PHP 8.4 در Livewire 4:
Setter/Getter برای کنترل و محاسبه:
public int $count { set => max(1, $value); }
public int $multiple { get => $this->count * 5; }
کش داخلی در property hooks:
public string $expensiveData {
get => cache()->remember("data-{$this->id}", 3600, fn()=> $this->fetchData());
set => cache()->put("data-{$this->id}", $value, 3600);
}
بهبود UI و تجربه کاربری:
Click Me Load More State خودکار:
<button wire:click="save" class="data-[loading]:opacity-50">Save</button>
Slots همانند Blade:
<livewire:modal>{{ $slot }}</livewire:modal>
wire\:ref برای ارتباط مستقیم بین کامپوننتها:
$this->dispatch('close')->to(ref: 'modal');
Blaze — بهینهسازی Blade
پیشپردازش بخشهای ثابت برای افزایش سرعت:
<x-card>
<x-slot:title>{{ $title }}</x-slot:title>
<div>{{ $content }}</div>
</x-card>
نصب:
composer require livewire/blaze
Islands Architecture
رندر فقط بخشهای لازم:
@island
<x-chart :data="$this->accountRevenue" />
@endisland
بارگذاری تنبل با Placeholder:
@island(lazy: true)
@placeholder <x-loading /> @endplaceholder
<x-heavy-component />
@endisland
اسکرول بینهایت بدون JS:
@island('posts', render: 'append')
@foreach($posts as $post) <x-post :post="$post" /> @endforeach
@endisland
<div wire:island="posts" wire:intersect="$paginator.nextPage()"></div>
Polling دورهای:
@island(poll: '5s')
<div>Active Users: {{ $activeUsers }}</div>
@endisland
جمعبندی:
Livewire 4 با کامپوننتهای یکپارچه، Blaze، Islands و پشتیبانی از **PHP 8.4**، توسعه در Laravel را سریعتر، سادهتر و لذتبخشتر کرده. ساخت اپهای تعاملی با عملکرد بالا حالا از همیشه راحتتر است.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤13🔥1