🎉 قبل از اینکه پلتفرم ما به طور کامل راهاندازی شود (که البته خبر خوبی دارم، بزودی تکمیل خواهد شد!)، تصمیم گرفتیم که محتویات آموزشی مفید در همین چهارچوب تلگرام آماده سازی کنیم.
🎓 تیم ما در حال حاضر مشغول آمادهسازی محتواهای آموزشی فوقالعاده است.
🌈 از برنامهنویسی تا آخرین ترندهای فناوری، قصد داریم تا تنوعی هیجانانگیز در موضوعات به شما ارائه دهیم تا هیچ سلیقهای نادیده گرفته نشود.
💬 و نکتهی جذابتر این است که قصد داریم به مرور با شما به صورت تعاملی پیش بریم! و موضوعاتی که بیشتر مد نظر شماست رو هم پوشش بدیم.
پس با ما همراه باشید و از این فضای دانش و انرژی بهرهبرداری کنید! 💥🥳🚀🎈
🎓 تیم ما در حال حاضر مشغول آمادهسازی محتواهای آموزشی فوقالعاده است.
🌈 از برنامهنویسی تا آخرین ترندهای فناوری، قصد داریم تا تنوعی هیجانانگیز در موضوعات به شما ارائه دهیم تا هیچ سلیقهای نادیده گرفته نشود.
💬 و نکتهی جذابتر این است که قصد داریم به مرور با شما به صورت تعاملی پیش بریم! و موضوعاتی که بیشتر مد نظر شماست رو هم پوشش بدیم.
پس با ما همراه باشید و از این فضای دانش و انرژی بهرهبرداری کنید! 💥🥳🚀🎈
👍17❤1
Personal Access Clients در Laravel Passport
🔍 مقدمه:
#Laravel_Password
از مفهومی به نام "Personal Access Tokens" پشتیبانی میکند که به توسعهدهندگان امکان میدهد به سادگی به API خود دسترسی پیدا کنند.
✨ چیستی Personal Access Tokens؟
این توکنها نوع خاصی از OAuth 2.0 توکنها هستند و برای شرایطی که توسعهدهنده بخواهد به سادگی و بدون فرآیند تأیید هویت پیچیده به API خود دسترسی داشته باشد، مناسباند.
📌 کاربرد:
وقتی شما به عنوان توسعهدهنده میخواهید به سادگی و بدون اجرای فرآیندهای پیچیده تأیید هویت، به API خود دسترسی داشته باشید، "Personal Access Tokens" به کمک شما میآید.
💡 چطور ایجاد کنیم؟
برای استفاده، نیاز به ایجاد "Personal Access Client" دارید. وقتی دستور php artisan passport:install را اجرا میکنید، Passport به صورت خودکار یک "Personal Access Client" ایجاد میکند و اطلاعاتی مانند client_id، در پایگاه داده ذخیره میشود.
🔗 پیوند با OAuth:
به یاد داشته باشید که "Personal Access Client" در واقع یک نوع مشتری OAuth است که به شما امکان میدهد توکنهای دسترسی شخصی را ایجاد کنید.
#PapiDon
🔍 مقدمه:
#Laravel_Password
از مفهومی به نام "Personal Access Tokens" پشتیبانی میکند که به توسعهدهندگان امکان میدهد به سادگی به API خود دسترسی پیدا کنند.
✨ چیستی Personal Access Tokens؟
این توکنها نوع خاصی از OAuth 2.0 توکنها هستند و برای شرایطی که توسعهدهنده بخواهد به سادگی و بدون فرآیند تأیید هویت پیچیده به API خود دسترسی داشته باشد، مناسباند.
📌 کاربرد:
وقتی شما به عنوان توسعهدهنده میخواهید به سادگی و بدون اجرای فرآیندهای پیچیده تأیید هویت، به API خود دسترسی داشته باشید، "Personal Access Tokens" به کمک شما میآید.
💡 چطور ایجاد کنیم؟
برای استفاده، نیاز به ایجاد "Personal Access Client" دارید. وقتی دستور php artisan passport:install را اجرا میکنید، Passport به صورت خودکار یک "Personal Access Client" ایجاد میکند و اطلاعاتی مانند client_id، در پایگاه داده ذخیره میشود.
🔗 پیوند با OAuth:
به یاد داشته باشید که "Personal Access Client" در واقع یک نوع مشتری OAuth است که به شما امکان میدهد توکنهای دسترسی شخصی را ایجاد کنید.
#PapiDon
👍6❤4
🔐 آشنایی با OAuth
📘 چیستی OAuth؟
#OAuth
یک استاندارد باز برای احراز هویت است که به کاربران امکان میدهد اطلاعات حسابهای خود را به سایر اپلیکیشنها بدهند بدون اینکه رمز عبور خود را به آنها منتقل کنند.
🚀 چگونه کار میکند؟
1.کاربر درخواست دسترسی به یک سرویس یا منبع خاص میکند.
2.کاربر به سرویس مورد نظر (مانند Google یا Facebook) منتقل میشود.
3.پس از تأیید هویت و رضایت، یک توکن به اپلیکیشن ارسال میشود.
4.اپلیکیشن با استفاده از این توکن به سرویس دسترسی پیدا میکند.
🔍 چرا OAuth مهم است؟
به کاربران امکان میدهد که کنترل دقیقتری بر دسترسیهای اپلیکیشنها به اطلاعاتشان داشته باشند، در حالی که از امنیت حساب کاربریشان اطمینان حاصل کنند.
🌟 نسخههای مختلف:
*OAuth 1.0:
اولین نسخه، با چالشهای امنیتی
*OAuth 2.0:
نسخه بهروز شده و محبوبتر با فرآیندهای بهتر و امنتر
#PapiDon
📘 چیستی OAuth؟
#OAuth
یک استاندارد باز برای احراز هویت است که به کاربران امکان میدهد اطلاعات حسابهای خود را به سایر اپلیکیشنها بدهند بدون اینکه رمز عبور خود را به آنها منتقل کنند.
🚀 چگونه کار میکند؟
1.کاربر درخواست دسترسی به یک سرویس یا منبع خاص میکند.
2.کاربر به سرویس مورد نظر (مانند Google یا Facebook) منتقل میشود.
3.پس از تأیید هویت و رضایت، یک توکن به اپلیکیشن ارسال میشود.
4.اپلیکیشن با استفاده از این توکن به سرویس دسترسی پیدا میکند.
🔍 چرا OAuth مهم است؟
به کاربران امکان میدهد که کنترل دقیقتری بر دسترسیهای اپلیکیشنها به اطلاعاتشان داشته باشند، در حالی که از امنیت حساب کاربریشان اطمینان حاصل کنند.
🌟 نسخههای مختلف:
*OAuth 1.0:
اولین نسخه، با چالشهای امنیتی
*OAuth 2.0:
نسخه بهروز شده و محبوبتر با فرآیندهای بهتر و امنتر
#PapiDon
👍3❤2
🚀 Batch Actions در لاراول 🚀
✨ Batch Actions چیست؟
گاهی اوقات ممکن است بخواهید یک سری عملیات را بصورت گروهی بر روی چندین سطر از دیتابیس انجام دهید. به عبارت دیگر، به جای انجام یک عملیات بر روی هر سطر به طور جداگانه، میخواهید چند سطر را انتخاب کنید و یک عملیات مشخص را بر روی آنها به صورت همزمان اجرا کنید. این قابلیت در لاراول با نام Batch Actions قابل استفاده است.
🔧 چگونه از آن استفاده کنیم؟
برای استفاده از Batch Actions در لاراول، شما باید از متدهای موجود در کلاس Builder استفاده کنید. با استفاده از این متدها، میتوانید عملیات مورد نظر خود را بر روی چندین مدل به طور همزمان اجرا کنید.
🌐 مثال:
فرض کنید میخواهید چندین کاربر را به طور همزمان حذف کنید - در تصویر ضمیمه شده، نمایش داده شده است
#PapiDon
✨ Batch Actions چیست؟
گاهی اوقات ممکن است بخواهید یک سری عملیات را بصورت گروهی بر روی چندین سطر از دیتابیس انجام دهید. به عبارت دیگر، به جای انجام یک عملیات بر روی هر سطر به طور جداگانه، میخواهید چند سطر را انتخاب کنید و یک عملیات مشخص را بر روی آنها به صورت همزمان اجرا کنید. این قابلیت در لاراول با نام Batch Actions قابل استفاده است.
🔧 چگونه از آن استفاده کنیم؟
برای استفاده از Batch Actions در لاراول، شما باید از متدهای موجود در کلاس Builder استفاده کنید. با استفاده از این متدها، میتوانید عملیات مورد نظر خود را بر روی چندین مدل به طور همزمان اجرا کنید.
🌐 مثال:
فرض کنید میخواهید چندین کاربر را به طور همزمان حذف کنید - در تصویر ضمیمه شده، نمایش داده شده است
#PapiDon
👍5❤2
🔥 Custom Casts in Laravel 🔥
✨ Custom Casts چیست؟
در لاراول، میتوانیم با استفاده از Casts مقادیر خاصی از دیتابیس را به فرمتهای مورد نظر تبدیل کنیم. مانند تبدیل یک رشته به آرایه یا جیسون. Custom Casts امکان ایجاد تبدیلهای سفارشی را به ما میدهد.
🛠 چگونه از آن استفاده کنیم؟
ابتدا یک کلاس Cast سفارشی ایجاد میکنیم.
این کلاس باید دو متد get و set داشته باشد.
سپس در مدل خود، از این Cast استفاده میکنیم.
🌐 مثال ساده:
فرض کنید میخواهیم مقادیر یک ستون را به صورت معکوس ذخیره و بازیابی کنیم. در تصویر ضمیمه شده است.
#PapiDon
✨ Custom Casts چیست؟
در لاراول، میتوانیم با استفاده از Casts مقادیر خاصی از دیتابیس را به فرمتهای مورد نظر تبدیل کنیم. مانند تبدیل یک رشته به آرایه یا جیسون. Custom Casts امکان ایجاد تبدیلهای سفارشی را به ما میدهد.
🛠 چگونه از آن استفاده کنیم؟
ابتدا یک کلاس Cast سفارشی ایجاد میکنیم.
این کلاس باید دو متد get و set داشته باشد.
سپس در مدل خود، از این Cast استفاده میکنیم.
🌐 مثال ساده:
فرض کنید میخواهیم مقادیر یک ستون را به صورت معکوس ذخیره و بازیابی کنیم. در تصویر ضمیمه شده است.
// استفاده در مدل:با این روش، هر مقداری که در column_name ذخیره میشود، به صورت معکوس ذخیره میکند و هنگام بازیابی نیز به حالت معمولی برگردانده میشود.
protected $casts = [
'column_name' => ReverseString::class,
];
#PapiDon
👍8❤2
🔄 Every setback is a setup for a comeback.
📝 هر پسرفت، آمادهسازی برای بازگشت قویتر است.
وقتی با موانع و چالشهای زندگی روبرو میشویم، ممکن است احساس کمرویی یا ناامیدی کنیم. ولی همواره باید به یاد داشته باشیم که این لحظات سخت، پلههایی به سمت موفقیتهای بزرگتر هستند.
✨ در هر پسرفتی، فرصتی نهان برای یادگیری و تجربه است. بازگشت با قوت بیشتر فقط یک قدم دور است.
🔝💪🚀
#PapiDon
📝 هر پسرفت، آمادهسازی برای بازگشت قویتر است.
وقتی با موانع و چالشهای زندگی روبرو میشویم، ممکن است احساس کمرویی یا ناامیدی کنیم. ولی همواره باید به یاد داشته باشیم که این لحظات سخت، پلههایی به سمت موفقیتهای بزرگتر هستند.
✨ در هر پسرفتی، فرصتی نهان برای یادگیری و تجربه است. بازگشت با قوت بیشتر فقط یک قدم دور است.
🔝💪🚀
#PapiDon
👍6❤3🔥1👏1
🎨 معرفی Atomic CSS!
🔍 Atomic CSS چیست؟
در "Atomic CSS"، هر کلاس CSS فقط یک ویژگی استایل را اعمال میکند. این روش مانند فانکشنهای کوچک و تکوظیفهای در برنامهنویسی عمل میکند.
🌟 مزایا:
1️⃣ قابلیت استفاده مجدد و سریع.
2️⃣ حجم کمتر CSS.
3️⃣ تغییرات ساده و بدون دردسر.
❗️ معایب:
1️⃣ قرائت پایین HTML به دلیل استفاده از کلاسهای زیاد.
2️⃣ نیاز به یادگیری و فهم کلاسها.
3️⃣ تفاوت با سایر رویکردهای استایلدهی.
🛠 ابزار معروف با این رویکرد:
Tailwind CSS
✨در کل، Atomic CSS یک رویکرد جذاب برای طراحی وب است، اما ممکن است برای هر پروژه یا تیم مناسب نباشد.
#PapiDon
🔍 Atomic CSS چیست؟
در "Atomic CSS"، هر کلاس CSS فقط یک ویژگی استایل را اعمال میکند. این روش مانند فانکشنهای کوچک و تکوظیفهای در برنامهنویسی عمل میکند.
🌟 مزایا:
1️⃣ قابلیت استفاده مجدد و سریع.
2️⃣ حجم کمتر CSS.
3️⃣ تغییرات ساده و بدون دردسر.
❗️ معایب:
1️⃣ قرائت پایین HTML به دلیل استفاده از کلاسهای زیاد.
2️⃣ نیاز به یادگیری و فهم کلاسها.
3️⃣ تفاوت با سایر رویکردهای استایلدهی.
🛠 ابزار معروف با این رویکرد:
Tailwind CSS
✨در کل، Atomic CSS یک رویکرد جذاب برای طراحی وب است، اما ممکن است برای هر پروژه یا تیم مناسب نباشد.
#PapiDon
🔥4❤2👌2👍1🎉1
🌐 معرفی Rate Limiting در لاراول 🌐
دوستان عزیز، امروز قصد داریم دربارهی یکی از ویژگیهای بسیار مفید و امنیتی لاراول صحبت کنیم: Rate Limiting در مسیریابی!
🔒 What is Rate Limiting ?
Rate Limiting به شما اجازه میدهد تا تعداد درخواستهایی که به یک مسیر خاص در بازه زمانی معین میتواند ارسال شود، را محدود کنید.
🚀 چرا این ویژگی مهم است؟
✅ جلوگیری از حملات از نوع DDoS
✅ حفاظت از منابع سرور
✅ ارائه خدمات بهطور منصفانه به همه کاربران
🛠 چگونه در لاراول از آن استفاده کنیم؟
با استفاده از میدلویر
📖 پیشرفتهتر!
لاراول امکانات پیشرفتهای نیز برای Rate Limiting دارد، از جمله تعریف سفارشی Rate Limiters.
#PapiDon
دوستان عزیز، امروز قصد داریم دربارهی یکی از ویژگیهای بسیار مفید و امنیتی لاراول صحبت کنیم: Rate Limiting در مسیریابی!
🔒 What is Rate Limiting ?
Rate Limiting به شما اجازه میدهد تا تعداد درخواستهایی که به یک مسیر خاص در بازه زمانی معین میتواند ارسال شود، را محدود کنید.
🚀 چرا این ویژگی مهم است؟
✅ جلوگیری از حملات از نوع DDoS
✅ حفاظت از منابع سرور
✅ ارائه خدمات بهطور منصفانه به همه کاربران
🛠 چگونه در لاراول از آن استفاده کنیم؟
با استفاده از میدلویر
throttle میتوانید Rate Limiting را اعمال کنید:Route::middleware(['throttle:60,1'])->group(function () {
Route::get('/endpoint', 'Controller@method');
});
در این مثال، کاربر تنها اجازه دارد تا 60 درخواست در هر دقیقه به مسیر /endpoint ارسال کند.📖 پیشرفتهتر!
لاراول امکانات پیشرفتهای نیز برای Rate Limiting دارد، از جمله تعریف سفارشی Rate Limiters.
#PapiDon
👍15🔥4
🔍 دستور
📌 چگونه استفاده کنیم؟
🔗 اگر به دنبال استفاده از عملگرها هستید، همچنان ساده است:
#PapiDon
firstWhere
اگر تا به حال با دستور where در Eloquent کار کردهاید، firstWhere را هم حتما دوست خواهید داشت. این دستور، روش سریع و سادهای برای جستجو و دریافت اولین مدل است که با یک زوج مقدار-کلید مطابقت میکند.📌 چگونه استفاده کنیم؟
$user = User::firstWhere('name', 'John Doe');
در مثال بالا، به راحتی و با یک خط کد، اولین کاربر با نام "John Doe" را جستجو و دریافت کردیم.🔗 اگر به دنبال استفاده از عملگرها هستید، همچنان ساده است:
$user = User::firstWhere('age', '>=', 18);
🔺 نکته مهم: اگرچه firstWhere بسیار مفید و سریع است، ولی برای پیچیدگیهای بیشتر، همچنان پیشنهاد میشود از دستور where استفاده کنید.#PapiDon
👍3👌3🙏1
کانال آموزشی لاراول
🔍 دستور firstWhere اگر تا به حال با دستور where در Eloquent کار کردهاید، firstWhere را هم حتما دوست خواهید داشت. این دستور، روش سریع و سادهای برای جستجو و دریافت اولین مدل است که با یک زوج مقدار-کلید مطابقت میکند. 📌 چگونه استفاده کنیم؟ $user = User:…
🔺 نکته مهم:
دستور
در مقابل،
1️⃣. شرایط متعدد : با
2️⃣. عملیاتهای پیچیدهتر :
3️⃣. ترکیب با دستورات دیگر : اگر بخواهید شرایطی را با
4️⃣. گرفتن نتایج متعدد :
به همین دلیل، اگر شما به دنبال انجام یک جستجوی ساده و سریع هستید،
دستور
firstWhere به شما امکان میدهد که به سرعت و با استفاده از کد کمتر اولین موردی که با شرط مورد نظر شما مطابقت دارد را پیدا کنید. اما این دستور تنها برای شرایط ساده و محدود طراحی شده است.در مقابل،
where یک دستور بسیار قویتر است که اجازه میدهد تا با استفاده از شرایط متعدد و پیچیدهتر، جستجوهایی دقیقتر انجام دهید. بعضی از دلایل استفاده از where به جای firstWhere در موارد پیچیدهتر عبارتاند از:1️⃣. شرایط متعدد : با
where شما میتوانید تعداد نامحدودی شرط را اضافه کنید و از ترکیبهای مختلفی مانند orWhere, whereIn, و غیره استفاده کنید.2️⃣. عملیاتهای پیچیدهتر :
where امکان استفاده از توابع پایگاه داده و عملیاتهای متنوعتری را فراهم میآورد.3️⃣. ترکیب با دستورات دیگر : اگر بخواهید شرایطی را با
groupBy, having, orderBy و سایر دستورات ترکیب کنید، استفاده از where مناسبتر است.4️⃣. گرفتن نتایج متعدد :
firstWhere تنها یک نتیجه را بر میگرداند، در حالی که با استفاده از where و ترکیب آن با get یا `paginate`، شما میتوانید یک مجموعه از نتایج را بازیابی کنید.به همین دلیل، اگر شما به دنبال انجام یک جستجوی ساده و سریع هستید،
firstWhere میتواند گزینه خوبی باشد.👍4❤2
🔒محافظت از متغیرهای
وقتی در حال توسعه یک برنامه با Laravel هستید و
📌 گامهای عملیاتی:
1️⃣. فایل
2️⃣. در متد
📝 نکته: در اینجا،
🚫 همیشه توصیه میشود که در محیط تولید،
#PapiDon
env در Laravelوقتی در حال توسعه یک برنامه با Laravel هستید و
APP_DEBUG برابر با true قرار دارد، خطاها واقعا مفید هستند. اما چطور میتوانیم از نمایش متغیرهای حساس env در این خطاها جلوگیری کنیم؟📌 گامهای عملیاتی:
1️⃣. فایل
app/Exceptions/Handler.php را باز کنید.2️⃣. در متد
register، خط زیر را اضافه کنید:$this->withoutExpose(['DB_PASSWORD', 'DB_USERNAME', 'ANOTHER_SENSITIVE_KEY']);📝 نکته: در اینجا،
DB_PASSWORD, DB_USERNAME, و ANOTHER_SENSITIVE_KEY نمونههایی از متغیرهایی هستند که ممکن است بخواهید مخفی کنید. شما میتوانید هر متغیر env دیگری که مایل به محافظت از آن هستید را نیز به لیست اضافه کنید.🚫 همیشه توصیه میشود که در محیط تولید،
APP_DEBUG را بر روی false قرار دهید تا از نمایش هر گونه اطلاعات حساس به کاربران جلوگیری شود.#PapiDon
❤7👍3👌1
🔍 آشنایی با
در لاراول، هنگام کار با ارتباطهای مدلها ممکن است نیاز پیدا کنید تا کوئریهایی اجرا کنید که بر اساس وجود یا عدم وجود رکوردهای مرتبط در یک ارتباط تصمیم بگیرد.
📌 چگونه کار میکند؟
فرض کنید دو مدل داریم:
🔗 پیشرفتهتر:
شما همچنین میتوانید شرطهایی به
📚 در این مثال، فقط کاربرانی که پستهایی با بیش از 1000 بازدید دارند، بازگردانده میشوند.
#PapiDon
whereHas در لاراولدر لاراول، هنگام کار با ارتباطهای مدلها ممکن است نیاز پیدا کنید تا کوئریهایی اجرا کنید که بر اساس وجود یا عدم وجود رکوردهای مرتبط در یک ارتباط تصمیم بگیرد.
whereHas در اینجا به کمک میآید.📌 چگونه کار میکند؟
فرض کنید دو مدل داریم:
User و Post. هر کاربر میتواند چندین پست داشته باشد. حالا فرض کنید میخواهید تمام کاربرانی را پیدا کنید که حداقل یک پست دارند. در اینجا whereHas میتواند مفید باشد:$usersWithPosts = User::whereHas('posts')->get();🔗 پیشرفتهتر:
شما همچنین میتوانید شرطهایی به
whereHas اضافه کنید تا بر اساس ویژگیهایی از مدلهای مرتبط فیلتر کنید:$usersWithPopularPosts = User::whereHas('posts', function($query) {
$query->where('views', '>', 1000);
})->get();📚 در این مثال، فقط کاربرانی که پستهایی با بیش از 1000 بازدید دارند، بازگردانده میشوند.
#PapiDon
👍8❤3