Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
کانال آموزشی لاراول pinned «🔐 ورود بدون رمز عبور با Passkeys در لاراول! توسط Spatie آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟ 💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشن‌های لاراول…»
👍1🎉1
کانال آموزشی لاراول
Photo
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول

وقتی داری اپلیکیشن لاراول می‌سازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی.

👀 مثلاً:

اپلیکیشن چند تیمی ساختی و باید همیشه 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 جدید لاراول:

#[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 و scopeNotPublished

1️⃣ تست کن فقط مقالات منتشر شده بیاد

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

استفاده از کش یکی از روش‌های مهم برای افزایش سرعت دریافت داده‌ها و کاهش فشار روی سرور توی پروژه‌های واقعی محسوب می‌شه.

لاراول به‌صورت پیش‌فرض چندتا کش‌درایور مثل 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
👍7👏1
کانال آموزشی لاراول
Photo
🤖 اتصال Laravel به دنیای مدل‌های زبانی بزرگ با OpenRouter

پکیج 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
👏74👍1
کانال آموزشی لاراول
Photo
💬 ویجت Volet : دریافت بازخورد کاربر برای Laravel

گرفتن بازخورد از کاربران یکی از کلیدی‌ترین روش‌ها برای بهبود تجربه کاربری و ارتقای کیفیت اپلیکیشن‌هاست. پکیج 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
6
کانال آموزشی لاراول
Photo
🚀قابلیت پنهان در لاراول 12 که شاید ازشون خبر نداشتی - بخش اول

نسخه‌ی ۱۲ لاراول که در فوریه ۲۰۲۵ منتشر شد، فقط یه آپدیت نگهدارنده نبود. این نسخه با هدف بهبود تجربه‌ی برنامه‌نویس، قابلیت‌های جدیدی رو اضافه کرده که خیلی از اون‌ها شاید توی هیاهوی بروزرسانی‌های پکیج و پایداری، گم شده باشن.

در ادامه، با چند ویژگی کمتر شناخته‌شده ولی خیلی کاربردی در 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
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
12👍2
کانال آموزشی لاراول pinned « مسیر تبدیل شدن به یک برنامه‌نویس ارشد لاراول: نقشه راه و آزمون‌های واقعی دنیای کار در دنیای همیشه در حال تغییر برنامه‌نویسی وب، اینکه فقط لاراول یا حتی PHP را خوب بلد باشی کافی نیست. برای اینکه یک Laravel Lead Developer بشی، باید چند قدم جلوتر بری: طراحی…»
🎬 قسمت جدید از فصل سوم دوره هوش مصنوعی منتشر شد!

این قسمت یه نقطه‌ی عطفه!

🔥 اگه فکر می‌کنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جمله‌سازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع می‌شه!
بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش نده ! واقعاً درک عمیق مدل‌های زبانی و مسیر حرفه‌ای شدن توی AI

📌 با ساده‌ترین و شیرین‌ترین توضیح ممکن، مفهوم Token برات جا می‌افته؛
طوری که بعدش بگی: «آهااا! بالاخره گرفتم!» 😄




https://www.youtube.com/watch?v=ZGqCPhZKlp0
3👏2
کانال آموزشی لاراول pinned «🎬 قسمت جدید از فصل سوم دوره هوش مصنوعی منتشر شد! این قسمت یه نقطه‌ی عطفه! 🔥 اگه فکر می‌کنی مهندسی پرامپت نویسی فقط یعنی قشنگ نوشتن و جمله‌سازی، باید بگم نه رفیق… اصل ماجرا از یه جایی مثل Tokenization شروع می‌شه! بشدت دیدن این فصل رو پیشنهاد میکنم و از دستش…»
کانال آموزشی لاراول
Photo
🚀 Livewire 4: نسل جدید کامپوننت‌های PHP در Laravel


در 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
2025/10/15 19:50:11
Back to Top
HTML Embed Code: