کانال آموزشی لاراول
Photo
✨ درک Memoization در لاراول
یک تکنیک بهینهسازی است که برای افزایش سرعت اجرای برنامهها با ذخیرهسازی نتایج عملیاتهای پرهزینه (مانند فراخوانیهای تابع یا دسترسیهای پایگاه داده) و استفاده مجدد از این نتایج در فراخوانیهای بعدی به جای انجام مجدد عملیات استفاده میشود.
🛠 کاربرد Memoization در لاراول
در لاراول، memoization میتواند به خصوص در بهینهسازی عملکرد کوئریهای پایگاه داده، محاسبات پیچیده یا فراخوانیهای API که زمان و منابع زیادی را مصرف میکنند، مفید باشد. با ذخیرهسازی نتیجه این عملیاتها، لاراول میتواند به سرعت به دادههای قبلاً محاسبهشده دسترسی پیدا کند و از انجام مجدد کوئریها یا محاسبات جلوگیری کند.
🧐 چگونگی استفاده از Memoization
1️⃣ تعریف کش: ابتدا باید یک مکانیسم برای ذخیرهسازی و بازیابی نتایج ایجاد کنید. در لاراول، میتوانید از سیستم کش از پیش ساختهشده استفاده کنید.
2️⃣ کدنویسی تابع با Memoization: هنگام نوشتن تابعی که قرار است از memoization استفاده کند، باید ابتدا بررسی کنید که آیا نتیجه عملیات قبلاً محاسبه و ذخیره شده است یا خیر. اگر نتیجه موجود باشد، باید آن را بازیابی و برگردانید؛ در غیر این صورت، باید عملیات را انجام دهید، نتیجه را ذخیره کنید و سپس آن را برگردانید.
3️⃣ کلیدهای کش: برای هر نتیجه ذخیرهشده، باید یک کلید منحصر به فرد تعریف کنید. این کلید باید تمام پارامترهای ورودی تابعی که ممکن است نتیجه را تغییر دهند را در نظر بگیرد.
⚙️ مثال عملی
فرض کنید میخواهیم نتایج یک کوئری پایگاه داده سنگین را که لیستی از کاربران را برمیگرداند، memoize کنیم:
🔸 در Laravel، Memoization به صورت معمول از کشها (Caching) استفاده میکند. وقتی یک محاسبه انجام میشود، نتیجه آن به عنوان یک کلید-مقدار در کش (Cache) ذخیره میشود. بار دیگری که همان محاسبه مورد نیاز است، ابتدا کش بررسی میشود. اگر نتیجه در کش وجود داشته باشد، برنامه از کش استفاده میکند به جای اجرای محاسبه مجدد. این کار باعث افزایش سرعت عملکرد برنامه میشود.
📚 نتیجهگیری
استفاده از memoization در لاراول میتواند به طور قابل توجهی به بهبود عملکرد برنامههایی که با عملیاتهای پرهزینه سر و کار دارند کمک کند. با این حال، مهم است که دقت کنید که از آن در جاهای مناسب و به شیوهای اصولی استفاده شود تا از افزودن پیچیدگی بیمورد به برنامه جلوگیری شود.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
یک تکنیک بهینهسازی است که برای افزایش سرعت اجرای برنامهها با ذخیرهسازی نتایج عملیاتهای پرهزینه (مانند فراخوانیهای تابع یا دسترسیهای پایگاه داده) و استفاده مجدد از این نتایج در فراخوانیهای بعدی به جای انجام مجدد عملیات استفاده میشود.
🛠 کاربرد Memoization در لاراول
در لاراول، memoization میتواند به خصوص در بهینهسازی عملکرد کوئریهای پایگاه داده، محاسبات پیچیده یا فراخوانیهای API که زمان و منابع زیادی را مصرف میکنند، مفید باشد. با ذخیرهسازی نتیجه این عملیاتها، لاراول میتواند به سرعت به دادههای قبلاً محاسبهشده دسترسی پیدا کند و از انجام مجدد کوئریها یا محاسبات جلوگیری کند.
🧐 چگونگی استفاده از Memoization
1️⃣ تعریف کش: ابتدا باید یک مکانیسم برای ذخیرهسازی و بازیابی نتایج ایجاد کنید. در لاراول، میتوانید از سیستم کش از پیش ساختهشده استفاده کنید.
2️⃣ کدنویسی تابع با Memoization: هنگام نوشتن تابعی که قرار است از memoization استفاده کند، باید ابتدا بررسی کنید که آیا نتیجه عملیات قبلاً محاسبه و ذخیره شده است یا خیر. اگر نتیجه موجود باشد، باید آن را بازیابی و برگردانید؛ در غیر این صورت، باید عملیات را انجام دهید، نتیجه را ذخیره کنید و سپس آن را برگردانید.
3️⃣ کلیدهای کش: برای هر نتیجه ذخیرهشده، باید یک کلید منحصر به فرد تعریف کنید. این کلید باید تمام پارامترهای ورودی تابعی که ممکن است نتیجه را تغییر دهند را در نظر بگیرد.
⚙️ مثال عملی
فرض کنید میخواهیم نتایج یک کوئری پایگاه داده سنگین را که لیستی از کاربران را برمیگرداند، memoize کنیم:
use Illuminate\Support\Facades\Cache;
function getHeavyUsersQuery() {
$key = 'heavy_users_query_result';
$ttl = 60 * 60;
// زمان زنده بودن کش به ثانیه، مثلاً یک ساعت
// ابتدا بررسی میکنیم که آیا نتیجه در کش موجود است.
if (Cache::has($key)) {
// بازگرداندن نتیجه از کش
return Cache::get($key);
}
// انجام کوئری و ذخیرهسازی نتیجه در کش اگر نتیجه در کش موجود نباشد
$result = User::where('some_condition', true)->get();
Cache::put($key, $result, $ttl);
return $result;
}
🔸 در Laravel، Memoization به صورت معمول از کشها (Caching) استفاده میکند. وقتی یک محاسبه انجام میشود، نتیجه آن به عنوان یک کلید-مقدار در کش (Cache) ذخیره میشود. بار دیگری که همان محاسبه مورد نیاز است، ابتدا کش بررسی میشود. اگر نتیجه در کش وجود داشته باشد، برنامه از کش استفاده میکند به جای اجرای محاسبه مجدد. این کار باعث افزایش سرعت عملکرد برنامه میشود.
📚 نتیجهگیری
استفاده از memoization در لاراول میتواند به طور قابل توجهی به بهبود عملکرد برنامههایی که با عملیاتهای پرهزینه سر و کار دارند کمک کند. با این حال، مهم است که دقت کنید که از آن در جاهای مناسب و به شیوهای اصولی استفاده شود تا از افزودن پیچیدگی بیمورد به برنامه جلوگیری شود.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍12🔥4
کانال آموزشی لاراول
Photo
✨ دستورات کلیدی و نکات مهم Laravel Queue
در این پست، به بررسی دقیق و جامع دستورات صف (Queue) در Laravel میپردازیم.
1️⃣ ایجاد جدولها
-
- جدولهای لازم برای ذخیرهسازی jobها در دیتابیس را ایجاد میکند. این دستور برای زمانی که از درایور دیتابیس برای صفها استفاده میکنید، ضروری است.
-
- جدولی برای ذخیرهسازی اطلاعات jobهایی که با شکست مواجه شدهاند ایجاد میکند. این به شما کمک میکند تا خطاها را ردیابی و مدیریت کنید.
2️⃣ اجرای و مدیریت Workerها
-
- یک worker صف را اجرا میکند تا jobهای موجود در صف را پردازش کند. این دستور برای شروع فرآیند پردازش صف است.
-
- مشابه
-
- تمام workerهای صف را ریاستارت میکند. مفید است زمانی که کد جدیدی منتشر شده و میخواهید تغییرات را اعمال کنید.
3️⃣ مدیریت Jobهای شکستخورده
-
- یک یا چند job شکستخورده را برای اجرای مجدد به صف باز میگرداند. برای اجرای مجدد jobهایی که به دلیل خطاهای قابل رفع شکست خوردهاند.
-
- یک job شکستخورده خاص را از جدول jobهای شکستخورده حذف میکند. استفاده میشود وقتی دیگر نیازی به امتحان مجدد یک job نیست.
-
- تمام jobهای شکست خورده را از جدول پاک میکند. برای پاکسازی و ریست کردن صفهای شکستخورده استفاده میشود.
-
- لیستی از تمام jobهای شکستخورده را نمایش میدهد. برای تحلیل و بررسی خطاها استفاده میشود.
4️⃣ تاخیر و تلاش مجدد در Jobها
- Dispatching with Delay:
- برای ارسال یک job به صف با تاخیر، میتوانید از متد
- Release for Retry:
- دستور `release($delay)`در داخل یک job اجرا میشود تا آن job را برای اجرای مجدد با تاخیر در صف قرار دهد. بسیار مفید برای زمانهایی که میخواهید یک job را پس از بروز یک خطای موقتی دوباره امتحان کنید.
5️⃣ تعیین زمان انقضا برای تلاش مجدد
- Using
- در داخل کلاس job، متد
- مثال:
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
در این پست، به بررسی دقیق و جامع دستورات صف (Queue) در Laravel میپردازیم.
1️⃣ ایجاد جدولها
-
php artisan queue:table- جدولهای لازم برای ذخیرهسازی jobها در دیتابیس را ایجاد میکند. این دستور برای زمانی که از درایور دیتابیس برای صفها استفاده میکنید، ضروری است.
-
php artisan queue:failed-table- جدولی برای ذخیرهسازی اطلاعات jobهایی که با شکست مواجه شدهاند ایجاد میکند. این به شما کمک میکند تا خطاها را ردیابی و مدیریت کنید.
2️⃣ اجرای و مدیریت Workerها
-
php artisan queue:work- یک worker صف را اجرا میکند تا jobهای موجود در صف را پردازش کند. این دستور برای شروع فرآیند پردازش صف است.
-
php artisan queue:listen- مشابه
queue:work است، اما برای هر job یک پروسه جدید ایجاد میکند. مناسب برای محیط توسعه به دلیل آسانی در ردیابی خطاها.-
php artisan queue:restart- تمام workerهای صف را ریاستارت میکند. مفید است زمانی که کد جدیدی منتشر شده و میخواهید تغییرات را اعمال کنید.
3️⃣ مدیریت Jobهای شکستخورده
-
php artisan queue:retry {id}- یک یا چند job شکستخورده را برای اجرای مجدد به صف باز میگرداند. برای اجرای مجدد jobهایی که به دلیل خطاهای قابل رفع شکست خوردهاند.
-
php artisan queue:forget {id}- یک job شکستخورده خاص را از جدول jobهای شکستخورده حذف میکند. استفاده میشود وقتی دیگر نیازی به امتحان مجدد یک job نیست.
-
php artisan queue:flush- تمام jobهای شکست خورده را از جدول پاک میکند. برای پاکسازی و ریست کردن صفهای شکستخورده استفاده میشود.
-
php artisan queue:failed- لیستی از تمام jobهای شکستخورده را نمایش میدهد. برای تحلیل و بررسی خطاها استفاده میشود.
4️⃣ تاخیر و تلاش مجدد در Jobها
- Dispatching with Delay:
- برای ارسال یک job به صف با تاخیر، میتوانید از متد
dispatch با اضافه کردن ->delay($time) استفاده کنید، مثلاً SomeJob::dispatch()->delay(now()->addMinutes(10));- Release for Retry:
- دستور `release($delay)`در داخل یک job اجرا میشود تا آن job را برای اجرای مجدد با تاخیر در صف قرار دهد. بسیار مفید برای زمانهایی که میخواهید یک job را پس از بروز یک خطای موقتی دوباره امتحان کنید.
5️⃣ تعیین زمان انقضا برای تلاش مجدد
- Using
retryUntil:- در داخل کلاس job، متد
retryUntil را تعریف کنید تا زمان انقضا برای تلاشهای مجدد را مشخص کنید. این متد باید تاریخ و زمانی را که میخواهید job دیگر امتحان مجدد نشود را بازگرداند.- مثال:
public function retryUntil()
{
// تلاش مجدد برای یک ساعت پس از اولین اجرا
return now()->addHours(1);
}
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍9❤5🔥3
کانال آموزشی لاراول
Photo
✨ معرفی ابزار جادویی برای توسعهدهندگان Laravel: Blueprint!
🛠 Blueprint
یک ابزار کدنویسی قدرتمند برای فریمورک Laravel است که به توسعهدهندگان کمک میکند تا با سرعت و کارآمدی بیشتری کد بنویسند. با استفاده از یک فایل YAML ساده، میتوانید مدلها، کنترلرها، و سایر قسمتهای پروژه Laravel خود را تعریف و سپس کد مورد نیاز را به صورت خودکار تولید کنید.
⚙️ چگونه کار میکند؟
1️⃣ تعریف کامپوننتها: ابتدا با نوشتن یک فایل YAML ساده شروع میکنید و در آن مدلها، کنترلرها، و سایر کامپوننتهای مورد نیاز خود را تعریف میکنید.
2️⃣ تولید کد: با اجرای یک دستور ساده در ترمینال، Blueprint کد مورد نیاز شما را بر اساس تعریفهای YAML ایجاد میکند.
3️⃣ توسعه سریعتر: با استفاده از کد تولید شده، میتوانید بلافاصله به توسعه بخشهای دیگر پروژه خود بپردازید.
🔥 ویژگیهای کلیدی:
- تولید خودکار مدلها، کنترلرها، میگریشنها، فکتوریها و بیشتر
- پشتیبانی از تستهای اتوماتیک برای اطمینان از کیفیت کد
- افزایش چشمگیر سرعت توسعه پروژههای Laravel
📘 چگونه شروع کنیم؟
برای شروع با Blueprint، به سادگی آن را از طریق Composer نصب کنید و دستورالعملهای موجود در مستندات رسمی را دنبال کنید. توجه داشته باشید که داشتن دانش پایهای از Laravel و YAML برای استفاده موثر از این ابزار ضروری است.
🔗 منابع بیشتر:
برای کسب اطلاعات بیشتر و دسترسی به مستندات کامل، به وبسایت رسمی Blueprint مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🛠 Blueprint
یک ابزار کدنویسی قدرتمند برای فریمورک Laravel است که به توسعهدهندگان کمک میکند تا با سرعت و کارآمدی بیشتری کد بنویسند. با استفاده از یک فایل YAML ساده، میتوانید مدلها، کنترلرها، و سایر قسمتهای پروژه Laravel خود را تعریف و سپس کد مورد نیاز را به صورت خودکار تولید کنید.
⚙️ چگونه کار میکند؟
1️⃣ تعریف کامپوننتها: ابتدا با نوشتن یک فایل YAML ساده شروع میکنید و در آن مدلها، کنترلرها، و سایر کامپوننتهای مورد نیاز خود را تعریف میکنید.
2️⃣ تولید کد: با اجرای یک دستور ساده در ترمینال، Blueprint کد مورد نیاز شما را بر اساس تعریفهای YAML ایجاد میکند.
3️⃣ توسعه سریعتر: با استفاده از کد تولید شده، میتوانید بلافاصله به توسعه بخشهای دیگر پروژه خود بپردازید.
🔥 ویژگیهای کلیدی:
- تولید خودکار مدلها، کنترلرها، میگریشنها، فکتوریها و بیشتر
- پشتیبانی از تستهای اتوماتیک برای اطمینان از کیفیت کد
- افزایش چشمگیر سرعت توسعه پروژههای Laravel
📘 چگونه شروع کنیم؟
برای شروع با Blueprint، به سادگی آن را از طریق Composer نصب کنید و دستورالعملهای موجود در مستندات رسمی را دنبال کنید. توجه داشته باشید که داشتن دانش پایهای از Laravel و YAML برای استفاده موثر از این ابزار ضروری است.
🔗 منابع بیشتر:
برای کسب اطلاعات بیشتر و دسترسی به مستندات کامل، به وبسایت رسمی Blueprint مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
Blueprint
Blueprint | Getting Started
Getting started with Jigsaw's docs starter template is as easy as 1, 2, 3.
🔥6❤1👍1
کانال آموزشی لاراول
Photo
✨بهینهسازی عملکرد با استفاده از
سلام دوستان! 😊👋
امروز میخواهیم در مورد یکی از ویژگیهای جذاب و کاربردی Livewire صحبت کنیم که میتواند به شما در بهینهسازی عملکرد برنامههای وب کمک کند! نام این ویژگی
🤔 چرا
فرض کنید یک فانکشن دارید که دادههایی را از دیتابیس بازیابی میکند. این دادهها ممکن است پستهای یک وبلاگ، لیست محصولات یا هر چیز دیگری باشند. بدون
🛠 چگونه
وقتی شما
🧐کجا باید از
1️⃣ درخواستهای پیچیده: اگر فانکشنی دارید که کار پیچیدهای انجام میدهد یا به دادههایی دسترسی دارد که به ندرت تغییر میکنند.
2️⃣ صفحات پربازدید: در صفحاتی که تعداد زیادی کاربر به طور همزمان از آن استفاده میکنند و نیاز به عملکرد بالایی دارند.
⚙️ نحوه استفاده :
فقط کافی است
با این کار، Livewire فقط در صورت لزوم فانکشن را اجرا میکند و نتیجه را برای استفادههای بعدی ذخیره میکند. 🌱
⚜️خلاصه که
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
[()Computed]# در Livewireسلام دوستان! 😊👋
امروز میخواهیم در مورد یکی از ویژگیهای جذاب و کاربردی Livewire صحبت کنیم که میتواند به شما در بهینهسازی عملکرد برنامههای وب کمک کند! نام این ویژگی
[()Computed]# است. 🤔 چرا
[()Computed]# مهم است؟ فرض کنید یک فانکشن دارید که دادههایی را از دیتابیس بازیابی میکند. این دادهها ممکن است پستهای یک وبلاگ، لیست محصولات یا هر چیز دیگری باشند. بدون
[()Computed]#, هر بار که کاربر عملی را انجام میدهد، ممکن است این فانکشن دوباره و دوباره اجرا شود. این میتواند منجر به اتلاف منابع و کاهش سرعت برنامه شود. 🛠 چگونه
[()Computed]# کمک میکند؟وقتی شما
[()Computed]# را به فانکشنی اضافه میکنید، Livewire نتیجه فانکشن را "به یاد میآورد". اگر دفعه بعد ورودیهای فانکشن تغییر نکرده باشند، به جای اجرای دوباره فانکشن، Livewire از نتیجه ذخیرهشده قبلی استفاده میکند. این کار باعث میشود برنامه شما سریعتر و کارآمدتر کار کند. 🧐کجا باید از
[()Computed]# استفاده کنیم؟1️⃣ درخواستهای پیچیده: اگر فانکشنی دارید که کار پیچیدهای انجام میدهد یا به دادههایی دسترسی دارد که به ندرت تغییر میکنند.
2️⃣ صفحات پربازدید: در صفحاتی که تعداد زیادی کاربر به طور همزمان از آن استفاده میکنند و نیاز به عملکرد بالایی دارند.
⚙️ نحوه استفاده :
فقط کافی است
[()Computed]# را قبل از تعریف فانکشن خود قرار دهید، مثل این:#[Computed()]
public function posts() {
// کد برای بازیابی پستها
}
با این کار، Livewire فقط در صورت لزوم فانکشن را اجرا میکند و نتیجه را برای استفادههای بعدی ذخیره میکند. 🌱
⚜️خلاصه که
[()Computed]# یک ابزار عالی برای بهینهسازی عملکرد برنامههای وب شماست. با استفاده از این ویژگی، میتوانید اطمینان حاصل کنید که برنامه شما همیشه با بالاترین سرعت و کارآمدی کار میکند.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍14❤3
کانال آموزشی لاراول
Photo
✨ ادغام Cloudflare Turnstile در Laravel و Livewire
مایلید Cloudflare Turnstile CAPTCHA را در اپلیکیشن Laravel یا Livewire خود ادغام کنید؟
این بسته ارائه شده توسط Ryan Chandler، ادغام را بسیار ساده میکند.
🤩 استفاده از Cloudflare Turnstile برای Laravel
اسکریپتهای Turnstile را با استفاده از دستورالعمل Blade
پس از آن، کامپوننت
برای تایید پاسخ CAPTCHA، از قانون اعتبارسنجی ارائه شده در سرور استفاده کنید.
🔸 Cloudflare Turnstile با Livewire
این بسته همچنین میتواند با Livewire ادغام شود. پس از اعتبارسنجی موفقیتآمیز، ویژگی مشخص شده درون
برای جزئیات بیشتر در مورد سفارشیسازی و ادغام آن در اپلیکیشن خود، بسته را در GitHub بررسی کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
مایلید Cloudflare Turnstile CAPTCHA را در اپلیکیشن Laravel یا Livewire خود ادغام کنید؟
این بسته ارائه شده توسط Ryan Chandler، ادغام را بسیار ساده میکند.
🤩 استفاده از Cloudflare Turnstile برای Laravel
اسکریپتهای Turnstile را با استفاده از دستورالعمل Blade
@turnstileScripts در بخش <head> فایل چیدمان خود قرار دهید.<html>
<head>
@turnstileScripts()
</head>
<body>
{{ $slot }}
</body>
</html>
پس از آن، کامپوننت
<x-turnstile /> را درون یک <form> استفاده کنید:<form action="/" method="POST">
<x-turnstile />
<button>
Submit
</button>
</form>
برای تایید پاسخ CAPTCHA، از قانون اعتبارسنجی ارائه شده در سرور استفاده کنید.
use Illuminate\Validation\Rule;
public function submit(Request $request)
{
$request->validate([
'cf-turnstile-response' => ['required', Rule::turnstile()],
]);
}
🔸 Cloudflare Turnstile با Livewire
این بسته همچنین میتواند با Livewire ادغام شود. پس از اعتبارسنجی موفقیتآمیز، ویژگی مشخص شده درون
wire:model با توکن Turnstile بهروزرسانی خواهد شد.<x-turnstile wire:model="yourModel" />
برای جزئیات بیشتر در مورد سفارشیسازی و ادغام آن در اپلیکیشن خود، بسته را در GitHub بررسی کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
GitHub
GitHub - ryangjchandler/laravel-cloudflare-turnstile: A simple package to help integrate Cloudflare Turnstile.
A simple package to help integrate Cloudflare Turnstile. - ryangjchandler/laravel-cloudflare-turnstile
👍10❤1
کانال آموزشی لاراول
Photo
🎉 Laravel 11 😍
بالاخره انتظارها به پایان رسید و نسخه ۱۱ فریمورک محبوب لاراول منتشر شد! این نسخه جدید با قابلیتهای نوآورانه و بهبودهای چشمگیری همراه است که تجربه توسعهدهندگان را به سطح جدیدی ارتقا میبخشد.
🔍 از مهمترین قابلیتهای این نسخه میتوان به موارد زیر اشاره کرد:
1️⃣ ساختار دایرکتوری بهینهشده: کدنویسی ماژولار و استفاده مجدد از کد را آسانتر میکند، که نتیجهاش افزایش کارایی در فرآیند توسعه است.
2️⃣ مدیریت تنظیمات: با رویکردی جدید که تمامی تنظیمات از یک منبع بالادستی به ارث میبرند، تنظیمات را میتوان به صورت سادهتر و متمرکزتری مدیریت کرد.
3️⃣ قابلیت
4️⃣ بهروزرسانیهای مربوط به مدیریت مسیریابی: تعداد فایلهای مسیر پیشفرض از چهار به دو فایل کاهش یافته و برای افزودن مسیرهای API به صورت انتخابی عمل میکنید، که منجر به ساختار برنامهای تمیزتر و سفارشیتر میشود.
📚 سعی خواهیم کرد موضوعات مهم را در کانال به اشتراک بگذاریم و حتماً درباره آنها مطلب منتشر کنیم. با ما همراه باشید. 🫶😊
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
بالاخره انتظارها به پایان رسید و نسخه ۱۱ فریمورک محبوب لاراول منتشر شد! این نسخه جدید با قابلیتهای نوآورانه و بهبودهای چشمگیری همراه است که تجربه توسعهدهندگان را به سطح جدیدی ارتقا میبخشد.
🔍 از مهمترین قابلیتهای این نسخه میتوان به موارد زیر اشاره کرد:
1️⃣ ساختار دایرکتوری بهینهشده: کدنویسی ماژولار و استفاده مجدد از کد را آسانتر میکند، که نتیجهاش افزایش کارایی در فرآیند توسعه است.
2️⃣ مدیریت تنظیمات: با رویکردی جدید که تمامی تنظیمات از یک منبع بالادستی به ارث میبرند، تنظیمات را میتوان به صورت سادهتر و متمرکزتری مدیریت کرد.
3️⃣ قابلیت
Dumpable: تجربهی دیباگ کردن را با امکان استفاده از متدهای ()dd و ()dump درون کلاسها، بهبود میبخشد و دیباگ کردن را در سرتاسر فریمورک یکپارچه و مداوم میسازد.4️⃣ بهروزرسانیهای مربوط به مدیریت مسیریابی: تعداد فایلهای مسیر پیشفرض از چهار به دو فایل کاهش یافته و برای افزودن مسیرهای API به صورت انتخابی عمل میکنید، که منجر به ساختار برنامهای تمیزتر و سفارشیتر میشود.
📚 سعی خواهیم کرد موضوعات مهم را در کانال به اشتراک بگذاریم و حتماً درباره آنها مطلب منتشر کنیم. با ما همراه باشید. 🫶😊
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔥17👍3🤩1
کانال آموزشی لاراول pinned «🎉 Laravel 11 😍 بالاخره انتظارها به پایان رسید و نسخه ۱۱ فریمورک محبوب لاراول منتشر شد! این نسخه جدید با قابلیتهای نوآورانه و بهبودهای چشمگیری همراه است که تجربه توسعهدهندگان را به سطح جدیدی ارتقا میبخشد. 🔍 از مهمترین قابلیتهای این نسخه میتوان به موارد…»
🔥 با ارائه نسخه 11 لاراول که SQLite را بهعنوان پایگاه داده پیشفرض برگزیده، آشنایی با این تکنولوژی اکنون از اهمیت بیشتری برخوردار است.
✨ ما در مطلبی که پیشتر در کانال اتاق برنامه نویسی </> به اشتراک گذاشته بودیم، SQLite را بررسی کردهایم.
🔗 👈🏻 لینک مطلب برای مطالعه بیشتر
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
✨ ما در مطلبی که پیشتر در کانال اتاق برنامه نویسی </> به اشتراک گذاشته بودیم، SQLite را بررسی کردهایم.
🔗 👈🏻 لینک مطلب برای مطالعه بیشتر
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🙏7👍5🔥1👏1
کانال آموزشی لاراول
Photo
🔧 راهنمای رفع مشکل اتصال به دیتابیس در لاراول 11
🔸با آغاز به کار نسخه جدید لاراول 11 و تنظیم پیشفرض DB_CONNECTION=sqlite، برخی از توسعهدهندگان که تمایل دارند از mysql به عنوان دیتابیس پروژه خود استفاده کنند، ممکن است با خطاهای اتصال دیتابیس روبرو شوند. یکی از رایجترین این خطاها مربوط به تنظیمات collation است.
برای مثال، خطای SQLSTATE[HY000]: General error: 1273 Unknown collation: 'utf8mb4_0900_ai_ci' نشان میدهد که تنظیمات collation با نسخه فعلی سرور MySQL یا MariaDB شما سازگار نیست.
⛔️ علت خطا و راهحلها:
خطای Unknown collation: 'utf8mb4_0900_ai_ci به این دلیل رخ میدهد که سرور دیتابیس MySQL یا MariaDB شما از تنظیمات collation utf8mb4_0900_ai_ci پشتیبانی نمیکند. این collation برای نسخههای جدید MySQL معرفی شده است و به بهبود عملکرد و دقت مقایسه دادهها کمک میکند، اما در نسخههای قدیمیتر MySQL یا برخی نسخههای MariaDB پشتیبانی نمیشود.
🛠 راهحلها:
1️⃣ ارتقاء سرور MySQL/MariaDB:
اگر امکانپذیر است، سرور دیتابیس را به نسخهای ارتقاء دهید که از این
2️⃣ تغییر Collation در پروژه لاراول:
- به فایل
- در بخش اتصالات دیتابیس (
📝 فایل
⚙️ اجرای مایگریشنها
با استفاده از دستور php artisan migrate ، اطمینان حاصل کنید که جدولهای مورد نیاز در دیتابیس ایجاد شدهاند. این کار همچنین به حل مشکلات مربوط به عدم وجود جدولها کمک میکند.
⚜️برای اطمینان از اعمال تغییرات، دستورات php artisan config:cache و php artisan cache:clear را اجرا کنید تا تنظیمات کش شده پاک شود.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔸با آغاز به کار نسخه جدید لاراول 11 و تنظیم پیشفرض DB_CONNECTION=sqlite، برخی از توسعهدهندگان که تمایل دارند از mysql به عنوان دیتابیس پروژه خود استفاده کنند، ممکن است با خطاهای اتصال دیتابیس روبرو شوند. یکی از رایجترین این خطاها مربوط به تنظیمات collation است.
برای مثال، خطای SQLSTATE[HY000]: General error: 1273 Unknown collation: 'utf8mb4_0900_ai_ci' نشان میدهد که تنظیمات collation با نسخه فعلی سرور MySQL یا MariaDB شما سازگار نیست.
⛔️ علت خطا و راهحلها:
خطای Unknown collation: 'utf8mb4_0900_ai_ci به این دلیل رخ میدهد که سرور دیتابیس MySQL یا MariaDB شما از تنظیمات collation utf8mb4_0900_ai_ci پشتیبانی نمیکند. این collation برای نسخههای جدید MySQL معرفی شده است و به بهبود عملکرد و دقت مقایسه دادهها کمک میکند، اما در نسخههای قدیمیتر MySQL یا برخی نسخههای MariaDB پشتیبانی نمیشود.
🛠 راهحلها:
1️⃣ ارتقاء سرور MySQL/MariaDB:
اگر امکانپذیر است، سرور دیتابیس را به نسخهای ارتقاء دهید که از این
collation پشتیبانی میکند.2️⃣ تغییر Collation در پروژه لاراول:
- به فایل
config/database.php در پروژه لاراول خود بروید.- در بخش اتصالات دیتابیس (
mysql در این مورد)، collation را به یک مقدار سازگار با نسخهی MySQL/MariaDB سرورتان تغییر دهید. برای نسخههای قدیمیتر، utf8mb4_unicode_ci توصیه میشود:'mysql' => [
...
'collation' => 'utf8mb4_unicode_ci',
...
],
📝 فایل
env. پروژه خود را بررسی و اطمینان حاصل کنید که اطلاعات دیتابیس به درستی تنظیم شدهاند:DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
⚙️ اجرای مایگریشنها
با استفاده از دستور php artisan migrate ، اطمینان حاصل کنید که جدولهای مورد نیاز در دیتابیس ایجاد شدهاند. این کار همچنین به حل مشکلات مربوط به عدم وجود جدولها کمک میکند.
⚜️برای اطمینان از اعمال تغییرات، دستورات php artisan config:cache و php artisan cache:clear را اجرا کنید تا تنظیمات کش شده پاک شود.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍13❤2🔥1🙏1
کانال آموزشی لاراول
Photo
✨ آموزش اضافه کردن Middleware در لاراول 11
امروز میخواهم با شما درباره یکی از نوآوریهای جذاب در نسخه 11 لاراول، یعنی نحوه تعریف و استفاده از Middleware، به اشتراک بگذارم.
🤔 چرا Middleware ؟
در واقع Middlewareها بخش مهمی از هر اپلیکیشن وب هستند که به ما اجازه میدهند درخواستهای وارد شده به اپلیکیشن را پیش از رسیدن به هستهی اپلیکیشن (Core) یا بعد از ارسال پاسخ، فیلتر یا تغییر دهیم. این امکان از جمله کاربردهایی مانند احراز هویت، ثبت لاگ، و مدیریت دسترسی را فراهم میکند.
🔄 اما تغییرات در لاراول 11
در نسخههای پیشین لاراول،
🛠 گام به گام تا اضافه کردن Middleware
1️⃣ ایجاد Middleware: با دستور زیر Middleware مورد نظر خود را ایجاد کنید:
2️⃣ تعریف Middleware : Middleware ایجاد شده را در فایل
3️⃣ اعمال Middleware به روتها: حالا میتوانید این Middleware را به روت یا گروهی از روتها اعمال کنید:
🗝 نکات کلیدی
🔸به خاطر داشته باشید که این تغییرات به شما اجازه میدهند با ساختار سادهتر و انعطافپذیرتری در پروژههای لاراولی خود کار کنید.
🔸استفاده از این روش جدید، مدیریت Middlewareها در لاراول 11 را بسیار روانتر میکند.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
امروز میخواهم با شما درباره یکی از نوآوریهای جذاب در نسخه 11 لاراول، یعنی نحوه تعریف و استفاده از Middleware، به اشتراک بگذارم.
🤔 چرا Middleware ؟
در واقع Middlewareها بخش مهمی از هر اپلیکیشن وب هستند که به ما اجازه میدهند درخواستهای وارد شده به اپلیکیشن را پیش از رسیدن به هستهی اپلیکیشن (Core) یا بعد از ارسال پاسخ، فیلتر یا تغییر دهیم. این امکان از جمله کاربردهایی مانند احراز هویت، ثبت لاگ، و مدیریت دسترسی را فراهم میکند.
🔄 اما تغییرات در لاراول 11
در نسخههای پیشین لاراول،
Middleware`ها را در فایل `Kernel.php تعریف میکردیم. اما در نسخه 11، لاراول یک رویکرد جدید را معرفی کرده که تعریف Middleware`ها را در فایل `bootstrap/app.php انجام میدهیم. 🛠 گام به گام تا اضافه کردن Middleware
1️⃣ ایجاد Middleware: با دستور زیر Middleware مورد نظر خود را ایجاد کنید:
php artisan make:middleware OrgCustomerAuthenticate
2️⃣ تعریف Middleware : Middleware ایجاد شده را در فایل
bootstrap/app.php با استفاده از متد withMiddleware و alias تعریف کنید:
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'auth.org_customer' => \App\Http\Middleware\OrgCustomerAuthenticate::class,
]);
})
3️⃣ اعمال Middleware به روتها: حالا میتوانید این Middleware را به روت یا گروهی از روتها اعمال کنید:
Route::prefix('/panel')->middleware('auth.org_customer')->group(function() {
Route::get('/', [PanelController::class, 'index'])->name('panelSide');
});
🗝 نکات کلیدی
🔸به خاطر داشته باشید که این تغییرات به شما اجازه میدهند با ساختار سادهتر و انعطافپذیرتری در پروژههای لاراولی خود کار کنید.
🔸استفاده از این روش جدید، مدیریت Middlewareها در لاراول 11 را بسیار روانتر میکند.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍13❤2🔥1🙏1
کانال آموزشی لاراول
Photo
سلام رفقا
بعد از یه مدت نبودن، دوباره برگشتیم پر از انرژی🫶
⚡️ نگاهی به ویژگیهای جدید PHP 8.4
به زودی PHP 8.4 منتشر میشود و در این مطلب به بررسی ویژگیهای اعلامشده و امکانات جدید این نسخه خواهیم پرداخت.
📅 زمان انتشار PHP 8.4 چه تاریخی است؟
انتشار رسمی PHP 8.4 برای ۲۱ نوامبر ۲۰۲۴ برنامهریزی شده است. پیش از انتشار رسمی، این نسخه طی ۶ ماه مراحل پیشانتشار را از آلفا، بتا و کاندیداهای انتشار طی میکند.
💥 Property Hooks در PHP
از زبانهایی مثل Kotlin، C# و Swift الهام گرفته شده است. این ویژگی شامل دو نوع سینتکس متفاوت است که شبیه به closures کوتاه و چند خطی هستند:
🤓 در واقع Property hooks کمک میکنند تا از کدهای زائد مربوط به getter و setter های خاصیتها خلاص شویم و به یک خاصیت اجازه میدهد که دسترسی و بهروزرسانیها را با استفاده از hooks تعریف کند.
☄️ دسترسی به اعضای کلاس بدون پرانتز
از زمان معرفی دسترسی به اعضای کلاس هنگام نمونهسازی، شما باید ()new MyClass را در پرانتز قرار دهید، وگرنه با خطا مواجه میشوید. سینتکس پیشنهادی به شما این امکان را میدهد که به ثوابت، خصوصیات و متدها بدون نیاز به پرانتز اضافی دسترسی داشته باشید:
⌛ این بهروزرسانی مشکل کوچک دسترسی به اعضای کلاس را سادهتر میکند، بهطوری که نیازی به افزودن پرانتزهای اضافی یا استفاده از متد سازنده استاتیک نخواهد بود. این تغییر سینتکس PHP را بیشتر با زبانهای C مانند جاوا، #C و TypeScript همسو میکند که نیازی به پرانتزهای احاطهکننده ندارند.
🔗 برای مطالعه بیشتر PHP 8.4
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
بعد از یه مدت نبودن، دوباره برگشتیم پر از انرژی
به زودی PHP 8.4 منتشر میشود و در این مطلب به بررسی ویژگیهای اعلامشده و امکانات جدید این نسخه خواهیم پرداخت.
📅 زمان انتشار PHP 8.4 چه تاریخی است؟
انتشار رسمی PHP 8.4 برای ۲۱ نوامبر ۲۰۲۴ برنامهریزی شده است. پیش از انتشار رسمی، این نسخه طی ۶ ماه مراحل پیشانتشار را از آلفا، بتا و کاندیداهای انتشار طی میکند.
از زبانهایی مثل Kotlin، C# و Swift الهام گرفته شده است. این ویژگی شامل دو نوع سینتکس متفاوت است که شبیه به closures کوتاه و چند خطی هستند:
class User implements Named
{
private bool $isModified = false;
public function __construct(
private string $first,
private string $last
) {}
public string $fullName {
// بازنویسی اکشن "خواندن" با منطق دلخواه
get => $this->first . " " . $this->last;
// بازنویسی اکشن "نوشتن" با منطق دلخواه
set {
[$this->first, $this->last] = explode(' ', $value, 2);
$this->isModified = true;
}
}
}
از زمان معرفی دسترسی به اعضای کلاس هنگام نمونهسازی، شما باید ()new MyClass را در پرانتز قرار دهید، وگرنه با خطا مواجه میشوید. سینتکس پیشنهادی به شما این امکان را میدهد که به ثوابت، خصوصیات و متدها بدون نیاز به پرانتز اضافی دسترسی داشته باشید:
// پرانتزهای اضافی برای دسترسی به اعضای کلاس مورد نیاز هستند
$request = (new Request())->withMethod('GET')->withUri('/hello-world');
// خطا PHP (<= PHP 8.3): syntax error, unexpected token "->"
$request = new Request()->withMethod('GET')->withUri('/hello-world');
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤7🔥7👏1