کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
دوستان و همراهان عزیز، سلام! 👋

🕒 در دنیای پرمشغله امروز، یکی از مهم‌ترین مهارت‌هایی که هر فردی نیاز دارد، "مدیریت زمان" و "اولویت‌بندی کارها" است.

🔍 ما در کانال اتاق برنامه‌نویسی </> قصد داریم به این موضوعات مهم گاهی بپردازیم و با ارائه اطلاعات، تکنیک‌ها و راهکارهای کاربردی نگاهی به این مفاهیم داشته باشیم.

👀 ازینجا مسیر موضوع را دنبال کنید ...

👈🏻 🔗 هدفگذاری SMART
3🔥1👏1
کانال آموزشی لاراول
Video
🌐 What is a Sitemap ?

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

🧐 اهمیت Sitemap چیست؟

🔸بهبود ایندکس‌شدن:
با داشتن Sitemap، موتورهای جستجو می‌توانند به راحتی صفحات جدید یا به‌روزرسانی‌های وب‌سایت شما را پیدا کنند.

🔸سازماندهی بهتر:
اگر وب‌سایت شما دارای تعداد زیادی صفحه یا محتوای پیچیده است، Sitemap به سازماندهی و دسته‌بندی محتوا کمک می‌کند.

🔸(بهینه‌سازی موتور جستجو) SEO :
به بهبود رتبه‌بندی وب‌سایت شما در نتایج جستجو کمک می‌کند، زیرا موتورهای جستجو بهتر می‌توانند محتوای شما را درک کنند.

🛠 انواع Sitemap:

🔹Sitemap XML:

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

🔹Sitemap HTML:

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


🌟 در اپلیکیشن لاراول خود با استفاده از Spatie Sitemap نقشه سایت بسازید.

🔔 ایجاد دستی این نقشه‌ها امکان‌پذیر است، و ما آموزشی در مورد نحوه ایجاد دستی نقشه سایت در اینجا داریم، اما یک پکیج با نام "laravel-sitemap" از Spatie ایجاد نقشه سایت را آسان‌تر از همیشه می‌کند.

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

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





کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
5🔥1
کانال آموزشی لاراول
Photo
Generate PDFs in Laravel from Blade Views

پکیج Laravel PDF از Spatie، روشی ساده برای ایجاد فایل‌های PDF در برنامه‌های Laravel فراهم می‌کند. این پکیج از نماهای Blade برای رندر کردن HTML استفاده می‌کند و سپس از آن نما برای ایجاد یک PDF با استفاده از Browsershot بهره می‌برد.

این امر امکان استفاده از ابزارهای CSS مدرن مانند Grid و Flexbox، فریم‌ورک‌های CSS مدرن مانند Tailwind و حتی کدهای جاوااسکریپت برای مواردی مانند رندر کردن نمودارها را فراهم می‌کند.

🛠 در اینجا یک مثال ابتدایی از ایجاد یک PDF و بازگرداندن آن از یک کنترلر آورده شده است، که متغیرهایی را به template ارسال می‌کنید که می‌توانید از آن‌ها برای رندر داینامیک داده‌های PDF استفاده کنید:

use Spatie\LaravelPdf\Facades\Pdf;

class DownloadInvoiceController
{
public function __invoke(Invoice $invoice)
{
return Pdf::view('pdfs.invoice', ['invoice' => $invoice])
->format('a4')
->name('your-invoice.pdf');
}
}


🔸پکیج Laravel PDF از ویژگی‌های زیر پشتیبانی می‌کند:

- رندر PDF‌ها از الگوهای Blade یا یک رشته HTML

- ذخیره یک PDF تولید شده در Laravel disk

- اجرای کد جاوااسکریپت هنگام ایجاد PDF

- تست فیک PDF با assertions قدرتمند

- تولید PDF‌ها در Lambda از طریق Laravel Sidecar

- کنترل پیشرفته PDF با ابزارهایی مانند page breaks، سفارشی‌سازی Browsershot

- و موارد دیگر...

ایجاد PDF‌ها در Laravel با استفاده از Blade، تولید PDF‌های سفارشی زیبا را آسان‌تر و قدرتمندتر از همیشه خواهد کرد!

🔗 مستندات رسمی پکیج




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍10🔥1
کانال آموزشی لاراول
Video
هنگام شروع یک اپلیکیشن جدید Laravel، باید از Model::shouldBeStrict استفاده کنید.

شما ایده‌ای برای اپ جدید دارید. شما Laravel را نصب می‌کنید و آماده شروع هستید. اولین کاری که باید انجام دهید چیست؟

برای من، من به app service provider می‌روم و به متد boot پایین می‌آیم و Model::shouldBeStrict را به صورت global تنظیم می‌کنم:

public function boot(): void
{
Model::shouldBeStrict();
}


با فعال سازی این گزینه، کارهای زیر را انجام می‌دهد:

public static function shouldBeStrict(bool $shouldBeStrict = true)
{
static::preventLazyLoading($shouldBeStrict);
static::preventSilentlyDiscardingAttributes($shouldBeStrict);
static::preventAccessingMissingAttributes($shouldBeStrict);
}


🛠 این سه کار را انجام می‌دهد:

1️⃣ Prevents lazy loading

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

2️⃣ It prevents silently discarding attributes

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

3️⃣ It prevents accessing missing attributes

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


🔸Preventing Lazy Loading

در اینجا نمونه‌ای آورده شده است.

$articles = \App\Models\Article::get();

foreach ($articles as $article) {
echo "<li>" . $article->user->name . "</li>\n";
}


اگر این کد را اجرا کنید، خروجی مورد انتظار شما را نشان می‌دهد. با این حال، این کد رابطه کاربر را به صورت lazy loading بارگیری می‌کند و در هر حلقه یک کوئری جدید ایجاد می‌کند.

با فعال بودن shouldBeStrict به جای اجرای کد، یک خطا دریافت می‌کنید که بازخورد فوری به شما می‌دهد:

Attempted to lazy load [user] on model [App\Models\Article] but lazy loading is disabled.


🔸Prevents Silently Discarding Attributes

در اینجا نمونه‌ای از تلاش برای به‌روزرسانی یک ویژگی که قابل پر کردن نیست آورده شده است:

$user->fill(["remember_token" => "bar"]);


حالا این کد یک استثنا برمی‌گرداند:

Add fillable property [remember_token] to allow mass assignment on [App\Models\User].


🔸Prevents Accessing Missing Attributes

فرض کنید ما سعی داریم یک ویژگی در کاربر را نمایش دهیم که ممکن است وجود نداشته باشد:

{{ $user->nonexistant }}


به طور پیش‌فرض، Laravel چیزی نمایش نمی‌دهد زیرا ویژگی پیدا نمی‌شود، اما با فعال بودن حالت Strict شما دریافت می‌کنید:

The attribute [nonexistant] either does not exist or was not retrieved for model [App\Models\User].

این در مواردی که ممکن است اشتباه تایپی داشته باشید بسیار کمک می‌کند، مانند:

{{ $user->emial }}


حالا، شما بازخورد فوری دریافت می‌کنید که اشتباه کرده‌اید.

فعال کردن ()Model::shouldBeStrict حالا اولین کاری است که من در هر اپ انجام می‌دهم و به من کمک می‌کند تا از اشتباهات پایه‌ای که ممکن است برای اپ بعدا زیان‌آور باشد، جلوگیری کنم.




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍266👏1
کانال آموزشی لاراول
Photo
درباره‌ی DB::transaction

در دنیای برنامه‌نویسی وب، اطمینان از اینکه داده‌های شما به درستی و با امنیت در دیتابیس ذخیره می‌شوند، حیاتی است. لاراول، ابزارهایی قدرتمند برای مدیریت این موضوعات ارائه می‌دهد. یکی از این ابزارها، DB::transaction است.

🧐 چیستی DB::transaction:

در لاراول، DB::transaction یک روش برای اجرای دسته‌ای از عملیات دیتابیس است که تضمین می‌کند این عملیات یا همگی با موفقیت انجام می‌شوند، یا هیچ‌کدام اجرا نمی‌شوند. این مفهوم در دنیای دیتابیس با نام ' تراکنش ' شناخته می‌شود.

💡 کاربردهای DB::transaction:

🔸 اطمینان از صحت و یکپارچگی داده‌ها:
هنگامی که چندین عملیات دیتابیس باید به صورت یک مجموعه کامل اجرا شوند.

🔸جلوگیری از تضادهای داده‌ای:
وقتی که عملیات مختلف بر روی یکسری داده‌ها هم‌زمان انجام می‌شوند.

🔸کنترل بهتر بر عملیات‌های پیچیده:
کمک به سازمان‌دهی و مدیریت عملیات‌های دیتابیس که باید به ترتیب خاصی انجام شوند.

🛠 چگونگی استفاده از DB::transaction:

1️⃣ تعریف تراکنش:
ابتدا با استفاده از ()DB::beginTransaction تراکنش را شروع کنید.

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

3️⃣ تایید تراکنش:
در صورتی که همه عملیات با موفقیت انجام شدند، با ()DB::commit تراکنش را تایید کنید.

4️⃣ بازگشت در صورت خطا:
در صورت بروز خطا در هر یک از عملیات، با ()DB::rollback تغییرات انجام‌شده را بازگردانید تا داده‌ها به حالت اولیه بازگردند.

⚙️ مثال عملی:

use Illuminate\Support\Facades\DB;

DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
}, 5);


در این مثال، دو عملیات آپدیت و حذف به صورت هم‌زمان اجرا می‌شوند. اگر هر دو عملیات با موفقیت انجام شوند، تراکنش تایید می‌شود. در غیر این صورت، هیچ‌کدام از تغییرات اعمال نمی‌شوند.

🔔 نکات کلیدی:

- استفاده از DB::transaction برای عملیات‌هایی که نیاز به یکپارچگی داده دارند، ضروری است.

- همیشه باید در نظر داشت که تراکنش‌ها می‌توانند بر عملکرد کلی سیستم تأثیر بگذارند، بنابراین باید با دقت استفاده شوند.

- لاراول امکان مدیریت خطاها و بازگشت از تراکنش‌ها را به راحتی فراهم می‌آورد.

🚀 خلاصه:

در لاراول DB::transaction یک روش قدرتمند برای مدیریت تراکنش‌های دیتابیس است که به توسعه‌دهندگان کمک می‌کند تا از یکپارچگی و صحت داده‌ها اطمینان حاصل کنند. این ابزار برای پروژه‌هایی که نیاز به عملیات‌های دیتابیس پیچیده دارند، بسیار مفید است.



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍86🔥1
کانال آموزشی لاراول
Photo
معرفی فریمورک Lumen - نسخه‌ی میکروی Laravel

🔸یک پروژه‌ی جدید و میکرو-فریمورک، توسط Taylor Otwell، خالق اصلی فریمورک Laravel، به عرصه‌ی برنامه‌نویسی معرفی شده است. Lumen را می‌توان نسخه‌ای سبک‌وزن، سریع و ظریف از Laravel دانست، که به‌ویژه برای توسعه‌ی میکروسرویس‌ها و API‌های واکنش‌گرا در زبان PHP طراحی شده است.

🚀 چرا Lumen؟

📈 سرعت بالا: Lumen با قدرت بیش از 1,700 درخواست در ثانیه، سریع‌تر از همتایان خود Slim (1,250 درخواست/ثانیه) و Silex (950 درخواست/ثانیه) است.

🛠 کدنویسی ساده: با سینتکسی ساده و کاربرپسند، کدنویسی در Lumen برای توسعه‌دهندگان بسیار راحت است.

🔄 قابلیت ارتقا به Laravel: شما می‌توانید در هر زمانی پروژه‌ی Lumen خود را به یک پروژه‌ی کامل Laravel ارتقا دهید.

⚙️ ویژگی‌های کلیدی: شامل سیستم‌هایی چون Fast Route، Event Management، Authentication با توکن‌ها، Caching، Error Logging با استفاده از Monolog و Queuing.

🔍 Laravel یا Lumen ?

- لاراول یک فریمورک کامل و جامع برای توسعه‌ی وب است، در حالی که لومن به‌عنوان یک میکرو-فریمورک برای ساختن میکروسرویس‌ها و API‌ها طراحی شده است.

- لومن (lumen) برخی از ویژگی‌های Laravel مانند سشن‌ها، کوکی‌ها و تمپلیت‌ها را حذف کرده تا سبک‌تر و تخصصی‌تر باشد.

📚 نیازمندی‌های Lumen:

برای استفاده از Lumen، شما به PHP با افزونه‌های OpenSSL، PDO و Mbstring نیاز دارید و همچنین باید Composer را نصب کنید.

چرا ممکن است Lumen مناسب شما نباشد؟

- لومن تنظیمات محدودتری نسبت به Laravel دارد.
- اگر نیاز به ویژگی‌های پیچیده‌ی Routing سیستم Symfony دارید، Laravel گزینه‌ی بهتری است.

- لومن کمتر شناخته‌شده است و کمتر مورد استفاده قرار گرفته نسبت به Laravel.

🏁 جمع‌بندی:

لومن (lumen)، میکروفریمورکی مدرن و سریع برای PHP، انتخاب عالی برای توسعه‌ی میکروسرویس‌ها و API‌های سریع و کارآمد است. با این حال، اگر نیاز به قابلیت‌های جامع‌تری دارید، Laravel ممکن است انتخاب بهتری باشد.

👍 نصب و تست Lumen ساده است و ارزش امتحان کردن را دارد. هر زمان که بخواهید، می‌توانید Lumen را به یک پروژه‌ی کامل Laravel ارتقا دهید.

🔗 وبسایت رسمی Lumen



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍81🔥1👏1
کانال آموزشی لاراول
Photo
درک Memoization در لاراول

یک تکنیک بهینه‌سازی است که برای افزایش سرعت اجرای برنامه‌ها با ذخیره‌سازی نتایج عملیات‌های پرهزینه (مانند فراخوانی‌های تابع یا دسترسی‌های پایگاه داده) و استفاده مجدد از این نتایج در فراخوانی‌های بعدی به جای انجام مجدد عملیات استفاده می‌شود.

🛠 کاربرد 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️⃣ ایجاد جدول‌ها

- 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
👍95🔥3
کانال آموزشی لاراول
Photo
معرفی ابزار جادویی برای توسعه‌دهندگان Laravel: Blueprint!

🛠 Blueprint

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

⚙️ چگونه کار می‌کند؟

1️⃣ تعریف کامپوننت‌ها: ابتدا با نوشتن یک فایل YAML ساده شروع می‌کنید و در آن مدل‌ها، کنترلر‌ها، و سایر کامپوننت‌های مورد نیاز خود را تعریف می‌کنید.

2️⃣ تولید کد: با اجرای یک دستور ساده در ترمینال، Blueprint کد مورد نیاز شما را بر اساس تعریف‌های YAML ایجاد می‌کند.

3️⃣ توسعه سریعتر: با استفاده از کد تولید شده، می‌توانید بلافاصله به توسعه بخش‌های دیگر پروژه خود بپردازید.

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

- تولید خودکار مدل‌ها، کنترلر‌ها، میگریشن‌ها، فکتوری‌ها و بیشتر
- پشتیبانی از تست‌های اتوماتیک برای اطمینان از کیفیت کد
- افزایش چشمگیر سرعت توسعه پروژه‌های Laravel

📘 چگونه شروع کنیم؟

برای شروع با Blueprint، به سادگی آن را از طریق Composer نصب کنید و دستورالعمل‌های موجود در مستندات رسمی را دنبال کنید. توجه داشته باشید که داشتن دانش پایه‌ای از Laravel و YAML برای استفاده موثر از این ابزار ضروری است.

🔗 منابع بیشتر:

برای کسب اطلاعات بیشتر و دسترسی به مستندات کامل، به وب‌سایت رسمی Blueprint مراجعه کنید.



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔥61👍1
🔥5
کانال آموزشی لاراول
Photo
بهینه‌سازی عملکرد با استفاده از [()Computed]# در Livewire

سلام دوستان! 😊👋
امروز می‌خواهیم در مورد یکی از ویژگی‌های جذاب و کاربردی Livewire صحبت کنیم که می‌تواند به شما در بهینه‌سازی عملکرد برنامه‌های وب کمک کند! نام این ویژگی [()Computed]# است.

🤔 چرا [()Computed]# مهم است؟

فرض کنید یک فانکشن دارید که داده‌هایی را از دیتابیس بازیابی می‌کند. این داده‌ها ممکن است پست‌های یک وبلاگ، لیست محصولات یا هر چیز دیگری باشند. بدون [()Computed]#, هر بار که کاربر عملی را انجام می‌دهد، ممکن است این فانکشن دوباره و دوباره اجرا شود. این می‌تواند منجر به اتلاف منابع و کاهش سرعت برنامه شود.

🛠 چگونه [()Computed]# کمک می‌کند؟

وقتی شما [()Computed]# را به فانکشنی اضافه می‌کنید، Livewire نتیجه فانکشن را "به یاد می‌آورد". اگر دفعه بعد ورودی‌های فانکشن تغییر نکرده باشند، به جای اجرای دوباره فانکشن، Livewire از نتیجه ذخیره‌شده قبلی استفاده می‌کند. این کار باعث می‌شود برنامه شما سریع‌تر و کارآمدتر کار کند.

🧐کجا باید از [()Computed]# استفاده کنیم؟

1️⃣ درخواست‌های پیچیده: اگر فانکشنی دارید که کار پیچیده‌ای انجام می‌دهد یا به داده‌هایی دسترسی دارد که به ندرت تغییر می‌کنند.

2️⃣ صفحات پربازدید: در صفحاتی که تعداد زیادی کاربر به طور همزمان از آن استفاده می‌کنند و نیاز به عملکرد بالایی دارند.

⚙️ نحوه استفاده :

فقط کافی است [()Computed]# را قبل از تعریف فانکشن خود قرار دهید، مثل این:

#[Computed()]
public function posts() {
// کد برای بازیابی پست‌ها
}


با این کار، Livewire فقط در صورت لزوم فانکشن را اجرا می‌کند و نتیجه را برای استفاده‌های بعدی ذخیره می‌کند. 🌱

⚜️خلاصه که [()Computed]# یک ابزار عالی برای بهینه‌سازی عملکرد برنامه‌های وب شماست. با استفاده از این ویژگی، می‌توانید اطمینان حاصل کنید که برنامه شما همیشه با بالاترین سرعت و کارآمدی کار می‌کند.



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍143