کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
🔥Singleton Resource in Laravel 🔥

آیا تاکنون با مواردی روبرو شده‌اید که فقط نیاز به یک نمونه منحصر به فرد از یک منبع داشته‌اید؟ مثلا فقط یک پروفایل کاربری و نیازی به ایجاد یا ذخیره‌سازی پروفایل‌های جدید ندارید!

لاراول با ارائه Route::singleton به شما این امکان را می‌دهد که مسیرهای مخصوص به یک منبع تک‌نمونه را تعریف کنید:

Route::singleton('profile', ProfileController::class);

با استفاده از این دستور، لاراول تنها مسیرهای مناسب برای یک منبع تک‌نمونه را تعریف می‌کند و به شما اجازه می‌دهد که کد خود را ساده‌تر و موثرتر نگه دارید.

پیشنهاد می‌کنم حتما این ویژگی مفید را در پروژه‌های خود امتحان کنید! 🚀

#PapiDon
👍10🔥1👏1
🖋 مفهوم Declarative و Imperative در برنامه‌نویسی 🖋

⚙️ برنامه‌نویسی فرمانی (Imperative):

- در این نوع برنامه‌نویسی، ما به سیستم دستور می‌دهیم که چطور یک کار را انجام دهد.
- هر گام از فرآیند به تفصیل مشخص شده است.

📌 مثال:
let total = 0;
for(let i=0; i<array.length; i++) {
total += array[i];
}

💻 برنامه‌نویسی اعلامی (Declarative):

- در اینجا، ما فقط مشخص می‌کنیم چه چیزی را می‌خواهیم و سیستم خودش تصمیم می‌گیرد چگونه آن را انجام دهد.
- تاکید بر نتیجه نهایی است، نه روی روند اجرایی.

📌 مثال:

const total = array.reduce((acc, val) => acc + val, 0);

🔍 ریکت و لاراول جز کدام هستند؟

- ریکت (React): این کتابخانه جاوااسکریپت اعلامی است. شما فقط توصیف می‌کنید چگونه UI در وضعیت معینی باید باشد و ریکت مسئول به‌روز رسانی است.

- لاراول (Laravel): چارچوب برنامه‌نویسی PHP که در بسیاری از جنبه‌هایش اعلامی است، ولی همچنان می‌تواند در برخی قسمت‌ها فرمانی باشد.


#PapiDon
8👍2👏2
🚀 hasManyThrough

📌 سه مدل داریم: Country`، `User و Post. هر کاربر (User) در یک کشور (Country) زندگی می‌کند و هر کاربر می‌تواند چندین پست (Post) داشته باشد.

🧐 می‌خواهیم همه پست‌هایی که توسط کاربران یک کشور خاص منتشر شده است را پیدا کنید. اگر مستقیما بخواهیم این کار را انجام دهیم، باید ابتدا تمام کاربران آن کشور را پیدا کرده و سپس همه پست‌های آنها را جمع‌آوری کنیم.

🎉 راه‌حل با hasManyThrough: با استفاده از این رابط، می‌توانیم به طور مستقیم به پست‌های مرتبط با کشور دسترسی پیدا کنیم، بدون نیاز به پیمایش کاربران.

class Country extends Model
{
public function posts()
{
return $this->hasManyThrough(
Post::class,
User::class,
'country_id', // foreign key on User table
'user_id', // foreign key on Post table
'id', // local key on Country table
'id' // local key on User table
);
}
}


🚀 به راحتی می‌توانیم تمام پست‌های منتشر شده در یک کشور را پیدا کنیم

$posts = $country->posts;
👍133
🌟 Your biggest risk isn't failing, it's getting too comfortable 🌟

📌 ممکن است فکر کنیم بزرگترین خطر وقتی است که شکست می‌خوریم. ولی در واقع، خطر واقعی زمانی رخ می‌دهد که در راحتی غرق می‌شویم. راحتی می‌تواند مانع رشد و پیشرفت ما شود. پس هرگز از تلاش و چالش‌های جدید کوتاه نیایید، زیرا همین چالش‌ها مسیر یادگیری و رشد شماست.

به جلو بروید، چون راحتی موقتی است، اما یادگیری و رشد، برای همیشه.


#PapiDon
9👍2🔥1👏1
🚀 map() with Collection

استفاده از متد ()map در کالکشن‌ها

دوستان عزیز، وقتی با کالکشن‌ها کار می‌کنید، بارها نیاز پیدا می‌کنید که بر روی هر آیتم از کالکشن تغییراتی اعمال کنید. در اینجا متد ()map به کمکتان می‌آید.

🔹 مثال:

$numbers = collect([1, 2, 3, 4, 5]);
$squaredNumbers = $numbers->map(function ($number) {
return $number * $number;
});
// نتیجه: [1, 4, 9, 16, 25]


🔸 می‌توانید حتی برای مدل‌ها هم از این متد استفاده کنید:

$users = User::all();
$fullNames = $users->map(function ($user) {
return $user->first_name . ' ' . $user->last_name;
});


📍 نکات مهم:
1️⃣ متد ()map کالکشن اصلی را تغییر نمی‌دهد.
2️⃣ اگر می‌خواهید هم آیتم و هم کلید آن را استفاده کنید:

$items = collect(['a' => 1, 'b' => 2, 'c' => 3]);
$mapped = $items->map(function ($value, $key) {
return $key . '-' . ($value * 2);
});
// نتیجه: ['a-2', 'b-4', 'c-6']


#PapiDon
14👍1
Livewire v3 Has Been Released

لایووایر نسخه v3 منتشر شده است.

https://livewire.laravel.com/docs/quickstart

📌 استفاده از آلپاین
لایووایر v3 آلپاین را برای انجام کارهای سنگین بهره‌برداری می‌کند. با ثبت افزونه‌های آلپاین، لایووایر اکنون اجازه می‌دهد تا آلپاین انجام کارهای سنگین را انجام دهد.

این همچنین به این معناست که آلپاین اکنون به صورت پیش‌فرض با لایووایر گنجانده شده است، بنابراین نیازی به بارگذاری آلپاین از طریق CDN یا NPM نیست. به طور خودکار جاسازی شده است.

علاوه بر این، v3 از افزونه Morph آلپاین برای مقایسه DOM و اعمال به‌روزرسانی‌ها به جای morphdom استفاده می‌کند. این موجب کاهش مشکلات مقایسه DOM و همگامی بهتر بین لایووایر و آلپاین خواهد شد.
👍9🔥1
🔹whereColumn in Laravel

این دستور اجازه می‌دهد تا دو یا چند ستون را در یک یا چند جدول با یکدیگر مقایسه کنید.

$records = YourModel::whereColumn('created_at', 'updated_at')->get();

📜 تمام رکوردهایی که created_at و updated_at آن‌ها یکسان است را برمیگرداند.

🔸 استفاده از شرط‌های مقایسه‌ای:

$records = YourModel::whereColumn('created_at', '<', 'updated_at')->get();

📜 رکوردهایی را برگردانده که created_at آن‌ها قبل از updated_at است.

🔸 مقایسه ستون‌ها در دو جدول مختلف:

فرض کنید دو مدل User و Order داریم:


$users = User::join('orders', 'users.id', '=', 'orders.user_id')
->whereColumn('users.account_balance', '>', 'orders.total_price')
->get();


📜 در اینجا، کاربرانی که موجودی حساب آن‌ها بیشتر از قیمت کل سفارش‌هایشان است، را پیدا می‌کنیم.


🔸 استفاده از چندین شرط در whereColumn :

$users = User::whereColumn([
['first_name', '=', 'last_name'],
['created_at', '<', 'updated_at']
])->get();


📜 این کد، کاربرانی را می‌یابد که نام و نام خانوادگی یکسان دارند و تاریخ ایجاد قبل از تاریخ بروزرسانی است.
👍141
🚀 به زودی پلتفرم ما با آموزش‌های جامع‌تر و گام به گام، همراه با مثال‌های بیشتر و جزئی تر، آماده خواهد شد. تا از هر آنچه که می‌خواهید بیشتر و بهتر بدانید، لذت ببرید. 😊🫶

🔔 اطلاع‌رسانی مربوط به پلتفرم تنها در همین کانال انجام خواهد شد. 🌟🔥

#PapiDon
❤‍🔥16👍51
🔍 مهارت‌های اساسی غیرفنی (Soft Skills) برای برنامه‌نویسان 🔍

همگان می‌دانند که برنامه‌نویسان نیاز به مهارت‌های فنی خاص خودشان دارند. اما آیا می‌دانید که مهارت‌های غیرفنی نیز در موفقیت آن‌ها نقش پررنگی دارد؟

🔹 1. ارتباط موثر: با مشتریان، تیم و مدیران.
🔹 2. حل مسئله: شناسایی و رفع چالش‌ها.
🔹 3. یادگیری مداوم: با تغییرات فناوری هم‌گام باشید.
🔹 4. کار گروهی: همکاری با افراد با تخصص‌های متفاوت.
🔹 5. مدیریت زمان: اولویت‌بندی و انجام وظایف در زمان مقرر.
🔹 6. پذیرش نقد: استفاده از فیدبک برای بهبود.
🔹 7. مدیریت استرس: مقابله با فشارهای کاری.
🔹 8. رویکرد مشتری‌مدار: فهم و پاسخ به نیازهای مشتری.
🔹 9. تصمیم‌گیری: در مواقع حساس و ناخواسته.
🔹 10. مسئولیت‌پذیری: پذیرش خطاها و یادگیری از آن‌ها.

🚀 هرگز فراموش نکنید که موفقیت در دنیای برنامه‌نویسی نه تنها به دانش فنی بستگی دارد، بلکه به توانایی‌های انسانی و تعامل با دیگران نیز وابسته است.


#PapiDon
@PapiDon_state
❤‍🔥43👍2
🔍 آشنایی با سیستم LAMP

آیا تا به حال با این سوال روبرو شده‌اید که LAMP چیست؟

🌐 What is LAMP ?

مخففی است از مجموعه‌ای از نرم‌افزارهای متن‌باز که به صورت ترکیبی برای احداث و بهره‌برداری از وب‌سایت‌ها و وب‌اپلیکیشن‌ها استفاده می‌شوند.


🔢 مولفه‌های LAMP:

1. L: Linux – سیستم‌عامل مبتنی بر لینوکس
2. A: Apache – وب‌سرور محبوب و متن‌باز
3. M: MySQL – پایگاه داده
4. P: PHP – زبان برنامه‌نویسی (گاهی به Perl یا Python هم می‌پردازند).


@PapiDon_state
👍5❤‍🔥3
🔍 Str::mask()

امروز با شما یک تابع جالب در لاراول به نام ()Str::mask را مرور می‌کنیم.

🎯 ماسک کردن بخشی از رشته با یک کاراکتر خاص (مانند *).

🔧 نحوه استفاده:
فرض کنید می‌خواهید چند کاراکتر از یک رشته را مخفی کنید، مثلاً ارقام وسط یک شماره کارت:

$card = Str::mask('1234567890123456', 5, 12); 

// Result : 1234********3456

در این مثال، کاراکترهای پنجم تا دوازدهم رشته با * جایگزین شده‌اند.
و اگر پارامتر دوم را ندهیم از کاراکتر پنجم به بعد رشته * جایگزین خواهد شد.


@PapiDon_state
👍203
Manage your energy, not your time. If you do that, time works itself out.

📌انرژی خود را مدیریت کن، نه زمانت را. اگر این کار را انجام دهی، زمان خود به خود درست می‌شود

معمولا ما به فکر این هستیم که چگونه زمان خود را به صورت بهینه‌تری استفاده کنیم، اما اگر انرژی‌امان را به درستی مدیریت نکنیم، حتی اگر زمان زیادی داشته باشیم، بهره‌برداری مناسبی از آن نخواهیم داشت.

🔋 مدیریت انرژی به مواردی مانند استراحت، تغذیه مناسب، ورزش، روانشناسی و حتی محیط کار مرتبط است. وقتی انرژی‌امان را به خوبی مدیریت می‌کنیم، بهره‌وری بیشتری خواهیم داشت و زمان خود را به صورت اثربخش‌تری استفاده می‌کنیم. از این رو، به جای اینکه تنها روی زمان متمرکز شویم، باید روی انرژی‌امان هم تمرکز داشته باشیم.

@PapiDon_state
👍72💯1
https://laravelpodcast.com/episodes

اگر علاقه دارید که اخبار، موضوعات جدید و کلا هرچیزی درباره دنیای لاراول رو در قالب پادکست بشنوید. اینجا رو حتما بهش یه سری بزنید. 🎙


📌@PapiDon_state
👍3
🔥 Laravel Octane 🔥

برای بهینه سازی پروژه های لاراول و افزایش سرعت آنها توسط تیم لاراول ارائه شده است. این پکیج برای رسیدن به چنین عملکردی از یکی از ابزار های Swoole یا RoadRunner (بعنوان Driver) به دلخواه کاربر استفاده می‌کند.

مزایا:

1️⃣ سرعت بیشتر
2️⃣ همگام‌سازی کمتر
3️⃣ سازگاری با Laravel

معایب:

1️⃣مشکلات Memory Leaks
2️⃣ چالش‌ها در Stateful Environments
3️⃣ پیچیدگی تنظیمات
4️⃣ سازگاری با برخی افزونه‌ها

🧐 مطالعه بیشتر :

🔗 https://laravel.com/docs/10.x/octane


📌@PapiDon_state
👍6❤‍🔥1
⚙️ Bun 1.0

یک ابزار همه‌کاره برای اجرا، ساخت، آزمون و اشکال‌زدایی جاوااسکریپت و تایپ‌اسکریپت است، از یک فایل تا یک برنامه کامل.

🔹 هدف اصلی "Bun" حذف کندی و پیچیدگی در توسعه است، بدون اینکه ویژگی‌های جاوااسکریپت را نادیده بگیرد.

🔹تا 4 برابر سریع‌تر از Node.js است و پشتیبانی کاملی از TypeScript و JSX دارد.

🔹 این ابزار دارای پلاگین‌ها، APIهای خاص و یک مدیر بسته سریع است.

🔹 یک باندل‌کننده و فشرده‌ساز جاوااسکریپت و تایپ‌اسکریپت است.

🔗 https://bun.sh/blog/bun-v1.0

📌@PapiDon_state
👍31
🚀 آشنایی با متد sole در لاراول

متد sole یک متد کمکی است که هم در کوئری بیلدر و هم در مجموعه‌ها (collections) در لاراول موجود است. وقتی از این متد استفاده می‌کنید، انتظار دارید که فقط یک نتیجه با شرایط معین دریافت کنید. اگر فقط یک نتیجه باشد، آن را دریافت می‌کنید، ولی اگر بیش از یک نتیجه یا حتی هیچ نتیجه‌ای وجود نداشته باشد، لاراول یک خطا به شما نمایش می‌دهد.

استفاده از sole در مجموعه‌ها (collections):

$collection = collect([1, 2, 3, 4]);

$item = $collection->filter(function ($value) {
return $value > 3;
})->sole();

در مثال بالا، متد filter یک مجموعه با مقدار 4 برمی‌گرداند. چون تنها یک مقدار با شرط داده شده وجود دارد، متد sole آن مقدار را برمی‌گرداند. در صورت وجود بیشتر یا کمتر از یک مقدار مطابقت داشته باشد، استثناء رخ می‌دهد.


📌@PapiDon_state
11👏5
"It always seems impossible until it's done."

🌟همیشه چیزها غیرممکن به نظر می‌رسند تا زمانی که انجام شوند.

این جمله به ما یادآور می‌شود که حتی اگر چیزی دشوار یا غیرممکن به نظر بیاید، با تلاش و پشتکار، می‌توان آن را به انجام رساند. بیایید با این انرژی و باور به توانمندی‌های خود، روزمان را شروع کنیم.


📌@PapiDon_state
👍81👏1
🚀 maatwebsite/excel in Larave

این پکیج، یک ابزار قدرتمند برای کار با فایل‌های Excel در فریم‌ورک لاراول است. این ابزار اجازه می‌دهد که به آسانی اطلاعات را از یک فایل Excel وارد و یا به آن خروجی دهید.

ویژگی‌ها:

1. وارد کردن اطلاعات با سرعت بالا
2. خروجی با فرمت‌های مختلف مانند XLS, XLSX, CSV
3. امکان مپ کردن ستون‌های فایل به مدل‌های دیتابیس
4. پشتیبانی از معیارها و فیلترهای مختلف

🛠نحوه نصب:

برای نصب این پکیج کافی است دستور زیر را در ترمینال خود اجرا کنید:

composer require maatwebsite/excel

📖 مستندات:

https://packagist.org/packages/maatwebsite/excel


📌@PapiDon_state
👍101
🚀 معرفی Pest در لاراول 🚀

آیا تا کنون با Pest آشنا شده‌اید؟

🔍 یک ابزار تست نویسی جدید و پویا در لاراول است. با این ابزار، می‌توانید تست‌های خود را با یک سینتکس زیباتر و ساده‌تر نوشته و اجرا کنید.

🌟 ویژگی‌های کلیدی:

1️⃣ سینتکس ساده و خواندنی: با استفاده از Pest، کدهای تست شما کوتاه‌تر، خواناتر و بهینه‌تر خواهد بود.

2️⃣ پشتیبانی از توابع Higher-order و متدهای Chainable : با این ویژگی، تست‌نویسی به یک تجربه انعطاف‌پذیر و قدرتمند تبدیل می‌شود.

⚙️ برای استفاده از Pest کافی است از طریق composer آن را نصب کنید:

composer require pestphp/pest --dev

🎉 اگر به دنبال بهبود فرآیند تست نویسی خود در لاراول هستید، Pest یک گزینه عالی است!

🔗 مستندات :
https://pestphp.com/


📌@PapiDon_state
👍62👏2
استفاده از متد __invoke در #لاراول

هر زمان که بخواهید یک کنترلر با تنها یک وظیفه داشته باشید، می‌توانید از متد جادویی __invoke استفاده کنید!

🔍 چرا؟

1️⃣ سادگی: نیازی به تعیین نام متد در مسیر ندارید.
2️⃣ خواندنی: کدتان تمیزتر و مستقیم‌تر می‌شود.

🌟 مثال:

کنترلر:
class ShowProfile extends Controller {
public function __invoke($id) {
// code ...
}
}


مسیر:
اگر از این متد در کنترلر استفاده کنید، نیازی به تعیین نام متد در مسیر (route) ندارید

Route::get('/user/{id}', ShowProfile::class);


همین! هر زمان که این مسیر فراخوانی می‌شود، متد __invoke اجرا می‌شود. 😍


@PapiDon_state
👍211
🔍 الگوی (Repository Pattern) در برنامه‌نویسی چیست؟

📚 فرض کنید می‌خواهید یک کتاب از کتابخانه بیرون بیاورید:

1️⃣ اگر مستقیما وارد انبار کتاب‌ها شوید و شروع به جستجو کنید، زمان زیادی می‌برد، گم می‌شوید و حتی ممکن است به دسترسی اطلاعات نادرست یا مناسبی نرسیده باشید.

2️⃣ اما، وقتی به میز اطلاعات مراجعه می‌کنید و از کتابدار کمک می‌خواهید، او به سرعت می‌تواند کتاب مورد نظر شما را پیدا و به شما بدهد.

در این مثال:

🔹کتابدار: همان "Repository" است. او می‌داند که هر کتاب کجا قرار دارد و چگونه باید به آن دسترسی پیدا کرد.

🔹انبار کتاب‌ها: به منابع داده اطلاعاتی (مثل پایگاه‌های داده یا APIها) اشاره دارد.

زمانی که در برنامه‌نویسی از الگوی "Repository Pattern" استفاده می‌کنیم، به جای اینکه مستقیماً به منبع داده مراجعه کنیم، با استفاده از یک "Repository" به داده‌ها دسترسی پیدا می‌کنیم. این رویکرد باعث می‌شود کد برنامه‌ی ما تمیزتر، قابل فهم‌تر و قابل تست‌تر باشد.


📌@PapiDon_state
🔥10❤‍🔥21👍1🙏1