Publications du canal کانال آموزشی لاراول

📌 کانال اتاق برنامه نویسی
@PapiDon_coding
@PapiDon_coding
3,417 abonnés
105 photos
4 vidéos
Dernière mise à jour 06.03.2025 00:23
Canaux similaires

26,391 abonnés

23,098 abonnés

13,337 abonnés
Le dernier contenu partagé par کانال آموزشی لاراول sur Telegram
🔔نکات کلیدی درباره Livewire و امنیت دادهها
1️⃣ دیتای Public و امنیت آن
در Livewire، تمام ویژگیهای public موجود در کنترلر کامپوننت به یک آبجکت جاوااسکریپت تبدیل شده و به سمت کلاینت ارسال میشوند. یعنی هر کسی میتونه این دادهها رو از طریق DevTools یا ابزارهای مشابه مشاهده کنه.
راهکار:
- از گذاشتن اطلاعات حساس به صورت public خودداری کنید.
- اگر نیاز دارید که دادهای رو به کلاینت ارسال کنید، مطمئن باشید که حاوی اطلاعات حساس نیست.
- برای دادههای حساس از private یا protected استفاده کنید و از متدهای ایمن برای دسترسی به آنها بهره ببرید.
2️⃣ متدهای Public و قابلیت فراخوانی از سمت کلاینت
متدهای public در Livewire بهطور پیشفرض قابل فراخوانی از سمت کلاینت هستند. این متدها میتوانند مستقیماً در Template با دستورات مثل
راهکار:
- متدهای حساس رو public نکنید یا مطمئن شوید که فقط عملیات امن و ضروری در این متدها انجام میشود.
- از middleware و authorization مناسب برای متدهای public استفاده کنید تا دسترسیهای غیرمجاز محدود شوند.
3️⃣ خصوصیات محاسبهشده (Computed Properties)
متدهایی که با
مزیت:
- جلوگیری از دسترسی غیرمجاز به منطق داخلی کامپوننت.
- کاربران نمیتوانند این متدها را مستقیماً از طریق DevTools یا هر روش دیگری فراخوانی کنند، که این موضوع امنیت را افزایش میدهد.
4️⃣ خصوصیات قفلشده (Locked Properties)
با استفاده از
مزیت:
- جلوگیری از تغییرات غیرمجاز و افزایش امنیت دادهها.
- محافظت از دادههای حساس مانند شناسهها که نباید توسط کاربران تغییر پیدا کنند.
🛠قانون کلی:
- هر متغیری که شامل دادههای کلیدی یا حساس است، باید با
5️⃣ هیدراسیون (Hydration) برای اطمینان از همگامسازی دادهها
فرآیندی است Hydration که تضمین میکند دادهها در زمان اجرای مجدد کامپوننت همواره بهروز هستند و از دیتابیس تازهسازی میشوند. این فرآیند شامل چند مرحله است:
1. Hydration
- هنگام بارگذاری اولیه کامپوننت، وضعیت آن در سمت سرور ایجاد و سپس به صورت HTML به مرورگر ارسال میشود.
2. Dehydration
- قبل از ارسال به مرورگر، وضعیت کامپوننت به یک فرم سریالشده تبدیل میشود تا حجم دادهها کاهش یابد.
3. Rehydration
- هنگام وقوع یک تعامل (مثل کلیک یا تایپ) در سمت کاربر، وضعیت سریالشده به سرور ارسال میشود.
- در سرور، وضعیت مجدداً به یک شیء کامپوننت تبدیل شده و تغییرات اعمال میشود.
- سپس پاسخ به مرورگر برمیگردد و وضعیت کامپوننت بهروز میشود.
مزیت:
- تجربه کاربری روان و دادههای دقیق و بهروز.
- امکان مدیریت تعاملات پویا و بهروزرسانیهای بلادرنگ بدون نیاز به بارگذاری مجدد صفحه.
راهکار:
- از متد
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
1️⃣ دیتای Public و امنیت آن
در Livewire، تمام ویژگیهای public موجود در کنترلر کامپوننت به یک آبجکت جاوااسکریپت تبدیل شده و به سمت کلاینت ارسال میشوند. یعنی هر کسی میتونه این دادهها رو از طریق DevTools یا ابزارهای مشابه مشاهده کنه.
راهکار:
- از گذاشتن اطلاعات حساس به صورت public خودداری کنید.
- اگر نیاز دارید که دادهای رو به کلاینت ارسال کنید، مطمئن باشید که حاوی اطلاعات حساس نیست.
- برای دادههای حساس از private یا protected استفاده کنید و از متدهای ایمن برای دسترسی به آنها بهره ببرید.
2️⃣ متدهای Public و قابلیت فراخوانی از سمت کلاینت
متدهای public در Livewire بهطور پیشفرض قابل فراخوانی از سمت کلاینت هستند. این متدها میتوانند مستقیماً در Template با دستورات مثل
wire:click، wire:submit
و غیره استفاده شوند. این یعنی کاربران میتوانند این متدها رو از طریق DevTools یا جاوااسکریپت صدا بزنند.راهکار:
- متدهای حساس رو public نکنید یا مطمئن شوید که فقط عملیات امن و ضروری در این متدها انجام میشود.
- از middleware و authorization مناسب برای متدهای public استفاده کنید تا دسترسیهای غیرمجاز محدود شوند.
3️⃣ خصوصیات محاسبهشده (Computed Properties)
متدهایی که با
[Computed]#
تعریف میشوند، حتی اگر public باشند، از سمت کلاینت به عنوان اکشن قابل فراخوانی نیستند. این متدها به عنوان خصوصیات محاسبهشده عمل میکنند و امنیت بهتری را فراهم میکنند. مزیت:
- جلوگیری از دسترسی غیرمجاز به منطق داخلی کامپوننت.
- کاربران نمیتوانند این متدها را مستقیماً از طریق DevTools یا هر روش دیگری فراخوانی کنند، که این موضوع امنیت را افزایش میدهد.
4️⃣ خصوصیات قفلشده (Locked Properties)
با استفاده از
[Locked]#
میتوانید متغیرهای حساس را قفل کنید تا کاربران نتونن اونها را از سمت کلاینت تغییر بدن. این ویژگی برای محافظت از دادههای کلیدی مثل شناسهها (IDs) بسیار مفید است. مزیت:
- جلوگیری از تغییرات غیرمجاز و افزایش امنیت دادهها.
- محافظت از دادههای حساس مانند شناسهها که نباید توسط کاربران تغییر پیدا کنند.
🛠قانون کلی:
- هر متغیری که شامل دادههای کلیدی یا حساس است، باید با
[Locked]#
مشخص شود تا از تغییر غیرمجاز جلوگیری شود.5️⃣ هیدراسیون (Hydration) برای اطمینان از همگامسازی دادهها
فرآیندی است Hydration که تضمین میکند دادهها در زمان اجرای مجدد کامپوننت همواره بهروز هستند و از دیتابیس تازهسازی میشوند. این فرآیند شامل چند مرحله است:
1. Hydration
- هنگام بارگذاری اولیه کامپوننت، وضعیت آن در سمت سرور ایجاد و سپس به صورت HTML به مرورگر ارسال میشود.
2. Dehydration
- قبل از ارسال به مرورگر، وضعیت کامپوننت به یک فرم سریالشده تبدیل میشود تا حجم دادهها کاهش یابد.
3. Rehydration
- هنگام وقوع یک تعامل (مثل کلیک یا تایپ) در سمت کاربر، وضعیت سریالشده به سرور ارسال میشود.
- در سرور، وضعیت مجدداً به یک شیء کامپوننت تبدیل شده و تغییرات اعمال میشود.
- سپس پاسخ به مرورگر برمیگردد و وضعیت کامپوننت بهروز میشود.
مزیت:
- تجربه کاربری روان و دادههای دقیق و بهروز.
- امکان مدیریت تعاملات پویا و بهروزرسانیهای بلادرنگ بدون نیاز به بارگذاری مجدد صفحه.
راهکار:
- از متد
()hydrate
برای همگامسازی مجدد دادهها استفاده کنید تا از بروز تناقضات دادهای جلوگیری شود.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
"فکر میکنی زمانی شروع میکنی که همه چیز کامل باشد، اما باور کن که چنین اتفاقی هیچوقت نخواهد افتاد. و حتی اگر هم بیافتد، آن زمان دیگر خیلی دیر شده است."
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
✨ استفاده از متد
🤔 اکشنها در لایووایر چیست؟
در لایووایر (Livewire)، اکشنها به شما اجازه میدهند تا از طریق رویدادها (events) و دستورات (actions)، ارتباط موثری بین کامپوننتهای مختلف برقرار کنید. یکی از امکانات جدید و مفید در این زمینه استفاده از ویژگی
متد
⚙️ متد
زمانی که یک کامپوننت فرزند میخواهد مستقیماً به یک متد یا ویژگی در والد دسترسی پیدا کند، به جای استفاده از رویدادها (dispatching events)، میتوانید از
مثال:
فرض کنید کامپوننت والد متدی به نام
در این مثال، کامپوننت فرزند از طریق
🕰 کی از
- ارتباط مستقیم بین فرزند و والد: وقتی که نیاز دارید بهراحتی از فرزند به متدها و خواص والد دسترسی پیدا کنید.
- پیچیدگی کم: در سیستمهای ساده که استفاده از رویدادها باعث پیچیدگی بیمورد میشود.
- تعداد کم کامپوننتها: زمانی که تعداد کمی کامپوننت دارید و ارتباط بین آنها مستقیم است.
⛔️ زمانی که نباید از
- سیستمهای پیچیده: وقتی تعداد زیادی کامپوننت دارید و استفاده بیش از حد از
- ارتباطات غیرمستقیم: وقتی نیاز است دادهها بین کامپوننتهای متعدد و پیچیده جابهجا شوند، بهتر است از رویدادها (dispatching events) استفاده کنید.
🎯 رویدادها (Dispatching Events) چیست؟
در لایووایر، رویدادها به شما این امکان را میدهند که بدون وابستگی مستقیم، اطلاعات بین کامپوننتها را جابهجا کنید. در این روش، یک کامپوننت میتواند رویدادی ارسال کند و کامپوننتهای دیگر به آن گوش دهند.
مزایای استفاده از رویدادها:
1️⃣ استقلال کامپوننتها: هر کامپوننت میتواند به طور مستقل عمل کند.
2️⃣ قابلیت توسعه بالا: برای پروژههای بزرگتر مناسبتر است.
3️⃣ ارتباطات چندطرفه: رویدادها میتوانند به صورت چندگانه مدیریت شوند، یعنی یک رویداد میتواند توسط چندین کامپوننت شنیده شود.
مثال از رویدادها:
و در والد:
⚖️ تفاوت
parent$
- ارتباط مستقیم بین فرزند و والد.
- سریع و ساده برای سیستمهای کوچک.
- وابستگی زیاد بین کامپوننتها.
- مناسب برای سیستمهای ساده و ارتباطات کمپیچیدگی.
Dispatching Events
- ارتباط غیرمستقیم بین کامپوننتها.
- کاهش وابستگی بین آنها.
- مناسب برای سیستمهای پیچیده و بزرگ.
- مدیریت بهتر در پروژههای چندلایه و پیچیده.
⚜️در نهایت، انتخاب بین استفاده از
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
parent$
در لایووایر ۳🤔 اکشنها در لایووایر چیست؟
در لایووایر (Livewire)، اکشنها به شما اجازه میدهند تا از طریق رویدادها (events) و دستورات (actions)، ارتباط موثری بین کامپوننتهای مختلف برقرار کنید. یکی از امکانات جدید و مفید در این زمینه استفاده از ویژگی
parent$
است که در نسخه ۳ لایووایر معرفی شده است.متد
parent$
به شما این امکان را میدهد که از داخل یک کامپوننت فرزند، به متدها و خواص (properties) کامپوننت والد دسترسی پیدا کنید. این قابلیت زمانی مفید است که بخواهید از داخل فرزند، عملیاتی در والد اجرا کنید یا دادهای را به آن بفرستید بدون اینکه رویدادی ارسال کنید.⚙️ متد
parent$
چطور کار میکند؟زمانی که یک کامپوننت فرزند میخواهد مستقیماً به یک متد یا ویژگی در والد دسترسی پیدا کند، به جای استفاده از رویدادها (dispatching events)، میتوانید از
parent$
استفاده کنید. در واقع parent$
مستقیماً از درون الگوهای Blade استفاده میشود.مثال:
فرض کنید کامپوننت والد متدی به نام
()removePost
دارد. شما میتوانید از داخل کامپوننت فرزند این متد را فراخوانی کنید:<button wire:click="$parent.removePost({{ $post->id }})">Remove</button>
در این مثال، کامپوننت فرزند از طریق
parent$
متد ()removePost
را در کامپوننت والد فراخوانی میکند و id
پست را به آن ارسال میکند. این کار ساده و مستقیم است و به شما اجازه میدهد ارتباط مؤثری بین فرزند و والد برقرار کنید بدون نیاز به سیستم پیچیده رویدادها.🕰 کی از
parent$
استفاده کنیم؟- ارتباط مستقیم بین فرزند و والد: وقتی که نیاز دارید بهراحتی از فرزند به متدها و خواص والد دسترسی پیدا کنید.
- پیچیدگی کم: در سیستمهای ساده که استفاده از رویدادها باعث پیچیدگی بیمورد میشود.
- تعداد کم کامپوننتها: زمانی که تعداد کمی کامپوننت دارید و ارتباط بین آنها مستقیم است.
⛔️ زمانی که نباید از
parent$
استفاده کنید:- سیستمهای پیچیده: وقتی تعداد زیادی کامپوننت دارید و استفاده بیش از حد از
parent$
باعث وابستگی شدید بین کامپوننتها میشود.- ارتباطات غیرمستقیم: وقتی نیاز است دادهها بین کامپوننتهای متعدد و پیچیده جابهجا شوند، بهتر است از رویدادها (dispatching events) استفاده کنید.
🎯 رویدادها (Dispatching Events) چیست؟
در لایووایر، رویدادها به شما این امکان را میدهند که بدون وابستگی مستقیم، اطلاعات بین کامپوننتها را جابهجا کنید. در این روش، یک کامپوننت میتواند رویدادی ارسال کند و کامپوننتهای دیگر به آن گوش دهند.
مزایای استفاده از رویدادها:
1️⃣ استقلال کامپوننتها: هر کامپوننت میتواند به طور مستقل عمل کند.
2️⃣ قابلیت توسعه بالا: برای پروژههای بزرگتر مناسبتر است.
3️⃣ ارتباطات چندطرفه: رویدادها میتوانند به صورت چندگانه مدیریت شوند، یعنی یک رویداد میتواند توسط چندین کامپوننت شنیده شود.
مثال از رویدادها:
$this->dispatch('eventName', ['data' => $someData]);
و در والد:
use Livewire\Attributes\On;
#[On('eventName')]
public function handleEvent($data)
{
// کاری که باید انجام شود
}
⚖️ تفاوت
parent$
و رویدادها (Dispatching Events)parent$
- ارتباط مستقیم بین فرزند و والد.
- سریع و ساده برای سیستمهای کوچک.
- وابستگی زیاد بین کامپوننتها.
- مناسب برای سیستمهای ساده و ارتباطات کمپیچیدگی.
Dispatching Events
- ارتباط غیرمستقیم بین کامپوننتها.
- کاهش وابستگی بین آنها.
- مناسب برای سیستمهای پیچیده و بزرگ.
- مدیریت بهتر در پروژههای چندلایه و پیچیده.
⚜️در نهایت، انتخاب بین استفاده از
parent$
و رویدادها (Dispatching Events) بستگی به نیاز پروژه دارد. برای ارتباطات ساده و مستقیم، parent$
مناسبتر است؛ اما برای پروژههای پیچیده و بزرگ، رویدادها استقلال بیشتری بین کامپوننتها فراهم میکنند و مدیریت بهتر را ممکن میسازند.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
🎓 وظیفه و کاربرد
امروز میخواهیم درباره یکی از متدهای مفید در Livewire به نام
🔍 بررسی
متد
🔧 مثال:
فرض کنید شما یک فرم دارید که شامل فیلدهای
این متد به راحتی همه این خصوصیات را به یکباره مقداردهی میکند.
🎯 آیا فقط در متد
خیر،
- در متدهای دیگر کامپوننت: برای بهروزرسانی خصوصیات هنگام اجرای یک اکشن خاص.
- در متد
- در متدهای لایووایر دیگر: در هر جایی که نیاز به مقداردهی خصوصیات داشته باشید.
🎯 نتیجهگیری
متد
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
()this->fill$
در Livewireامروز میخواهیم درباره یکی از متدهای مفید در Livewire به نام
()this->fill$
صحبت کنیم. این متد یکی از ابزارهای کاربردی برای پر کردن (یا مقداردهی) چندین خصوصیت (property) در کامپوننتهای Livewire به طور همزمان است.🔍 بررسی
()this->fill$
متد
$()this->fill$
به شما این امکان را میدهد که یک آرایه از دادهها را به چندین خصوصیت کامپوننت Livewire به طور همزمان اختصاص دهید. این متد به ویژه زمانی مفید است که شما بخواهید چندین خصوصیت را به یکباره مقداردهی کنید، بدون اینکه نیاز به تعیین مقدار هر خصوصیت به صورت جداگانه داشته باشید.🔧 مثال:
فرض کنید شما یک فرم دارید که شامل فیلدهای
name، email
و address
است و میخواهید این فیلدها را از یک منبع داده (مثلاً یک درخواست HTTP) بهروز کنید. به جای اینکه هر خصوصیت را به صورت جداگانه مقداردهی کنید، میتوانید از ()this->fill$
استفاده کنید:$this->fill([
'name' => $data['name'],
'email' => $data['email'],
'address' => $data['address'],
]);
این متد به راحتی همه این خصوصیات را به یکباره مقداردهی میکند.
🎯 آیا فقط در متد
()mount
استفاده میشود؟خیر،
()this->fill$
محدود به استفاده در متد ()mount
نیست. شما میتوانید از این متد در هر کجای کامپوننت Livewire استفاده کنید، مانند:- در متدهای دیگر کامپوننت: برای بهروزرسانی خصوصیات هنگام اجرای یک اکشن خاص.
- در متد
update
: برای بروزرسانی دادهها هنگام تعاملات کاربر.- در متدهای لایووایر دیگر: در هر جایی که نیاز به مقداردهی خصوصیات داشته باشید.
🎯 نتیجهگیری
متد
()this->fill$
یک ابزار قدرتمند و انعطافپذیر برای مقداردهی چندین خصوصیت در Livewire به طور همزمان است و میتواند در هر کجای کامپوننت مورد استفاده قرار گیرد. این متد به خصوص در مواردی که نیاز به مقداردهی سریع و همزمان چندین خصوصیت دارید، بسیار مفید است.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
🎓 Laravel Sail
امروز میخواهیم درباره یکی از ابزارهای مفید و کاربردی لاراول به نام Laravel Sail صحبت کنیم. این ابزار مخصوصاً برای توسعهدهندگانی طراحی شده که میخواهند محیط توسعه لاراول خود را با استفاده از Docker به سرعت و بدون پیچیدگی راهاندازی کنند. بیایید ببینیم Sail دقیقاً چه کار میکند و چرا ممکن است برای پروژههای شما مفید باشد.
🧐 اصلا Laravel Sail چیست؟
یک رابط خط فرمان سبک برای تعامل با محیط توسعه پیشفرض لاراول در Docker است. Sail به شما اجازه میدهد تا بدون نیاز به داشتن دانش عمیق از Docker، به راحتی یک محیط توسعه کامل برای پروژههای لاراول خود راهاندازی کنید. این محیط شامل سرویسهایی مثل PHP، MySQL، Redis و بسیاری دیگر است که برای توسعهی برنامههای لاراولی مورد نیاز هستند.
🔧 چطور کار میکند؟
در واقع Sail از طریق یک فایل
🎯 کاربرد Laravel Sail
- راهاندازی سریع محیط توسعه: Sail به شما این امکان را میدهد که با چند دستور ساده، یک محیط توسعه کامل راهاندازی کنید.
- استفاده در سیستمهای مختلف: Sail روی macOS، Linux و Windows (با WSL2) پشتیبانی میشود، بنابراین بدون نگرانی از سیستمعامل خود میتوانید از آن استفاده کنید.
- اجرای دستورات در محیط ایزوله: شما میتوانید دستورات مختلف PHP، Composer، Artisan و حتی Node.js را در داخل کانتینر Docker اجرا کنید، که به معنای ایزوله بودن محیط توسعه از سیستم اصلی شماست.
- مدیریت پایگاه دادهها: Sail به شما اجازه میدهد به سادگی با پایگاه دادههایی مثل MySQL و Redis در Docker تعامل داشته باشید، بدون اینکه نیاز به نصب مستقیم آنها روی سیستمتان داشته باشید.
🔍 چه زمانی از Sail استفاده کنیم؟
اگر میخواهید به سرعت و بدون درگیری با تنظیمات پیچیده Docker، یک محیط توسعه کامل برای پروژه لاراولی خود ایجاد کنید، Laravel Sail انتخاب بسیار خوبی است. این ابزار به خصوص برای تیمهایی که میخواهند یک محیط توسعه یکپارچه و مشترک داشته باشند، مفید است.
امیدوارم این درسگفتار به شما کمک کرده باشد تا بهتر درک کنید Laravel Sail چیست و چه کاربردهایی دارد! 🙂🫶
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
امروز میخواهیم درباره یکی از ابزارهای مفید و کاربردی لاراول به نام Laravel Sail صحبت کنیم. این ابزار مخصوصاً برای توسعهدهندگانی طراحی شده که میخواهند محیط توسعه لاراول خود را با استفاده از Docker به سرعت و بدون پیچیدگی راهاندازی کنند. بیایید ببینیم Sail دقیقاً چه کار میکند و چرا ممکن است برای پروژههای شما مفید باشد.
🧐 اصلا Laravel Sail چیست؟
یک رابط خط فرمان سبک برای تعامل با محیط توسعه پیشفرض لاراول در Docker است. Sail به شما اجازه میدهد تا بدون نیاز به داشتن دانش عمیق از Docker، به راحتی یک محیط توسعه کامل برای پروژههای لاراول خود راهاندازی کنید. این محیط شامل سرویسهایی مثل PHP، MySQL، Redis و بسیاری دیگر است که برای توسعهی برنامههای لاراولی مورد نیاز هستند.
🔧 چطور کار میکند؟
در واقع Sail از طریق یک فایل
docker-compose.yml
در ریشه پروژه شما کار میکند. این فایل، سرویسهای مختلف مورد نیاز برای اجرای پروژه را تعریف میکند. سپس با استفاده از دستوراتی که از طریق CLI Sail فراهم میشوند، میتوانید این سرویسها را به راحتی مدیریت کنید.🎯 کاربرد Laravel Sail
- راهاندازی سریع محیط توسعه: Sail به شما این امکان را میدهد که با چند دستور ساده، یک محیط توسعه کامل راهاندازی کنید.
- استفاده در سیستمهای مختلف: Sail روی macOS، Linux و Windows (با WSL2) پشتیبانی میشود، بنابراین بدون نگرانی از سیستمعامل خود میتوانید از آن استفاده کنید.
- اجرای دستورات در محیط ایزوله: شما میتوانید دستورات مختلف PHP، Composer، Artisan و حتی Node.js را در داخل کانتینر Docker اجرا کنید، که به معنای ایزوله بودن محیط توسعه از سیستم اصلی شماست.
- مدیریت پایگاه دادهها: Sail به شما اجازه میدهد به سادگی با پایگاه دادههایی مثل MySQL و Redis در Docker تعامل داشته باشید، بدون اینکه نیاز به نصب مستقیم آنها روی سیستمتان داشته باشید.
🔍 چه زمانی از Sail استفاده کنیم؟
اگر میخواهید به سرعت و بدون درگیری با تنظیمات پیچیده Docker، یک محیط توسعه کامل برای پروژه لاراولی خود ایجاد کنید، Laravel Sail انتخاب بسیار خوبی است. این ابزار به خصوص برای تیمهایی که میخواهند یک محیط توسعه یکپارچه و مشترک داشته باشند، مفید است.
امیدوارم این درسگفتار به شما کمک کرده باشد تا بهتر درک کنید Laravel Sail چیست و چه کاربردهایی دارد! 🙂🫶
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
تغییرات مسیریابی در لاراول 11 و مدیریت پیشوند
سلام دوستان 👋
امروز میخواهیم در مورد یکی از تغییرات مهم در لاراول 11 صحبت کنیم؛ یعنی نحوه مدیریت مسیریابی و پیشوند
🛠 حذف
در نسخههای قبلی لاراول، فایل
🧐 پیشوند
به صورت پیشفرض، وقتی شما از فایل
🔍 مثال:
فرض کنید در فایل
در این صورت، برای دسترسی به این مسیر باید از
✏️ تغییر یا حذف پیشوند
اگر میخواهید پیشوند
🔧 تنظیمات در bootstrap/app.php
با تنظیم apiPrefix به مقدار خالی ('')، دیگر مسیرهای API شما بدون پیشوند api/ خواهند بود. به این معنی که برای دسترسی به مسیر test فقط کافیست از http://127.0.0.1:8000/test استفاده کنید.
چرا
اگر این مسیر بدون پیشوند
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
api/
سلام دوستان 👋
امروز میخواهیم در مورد یکی از تغییرات مهم در لاراول 11 صحبت کنیم؛ یعنی نحوه مدیریت مسیریابی و پیشوند
api/
. این موضوع مخصوصاً برای کسانی که با نسخههای قبلی لاراول کار کردهاند، بسیار مهم است چون تغییرات عمدهای در ساختار مسیریابی لاراول 11 ایجاد شده است.🛠 حذف
RouteServiceProvider.php
در نسخههای قبلی لاراول، فایل
RouteServiceProvider.php
برای مدیریت مسیریابی و تنظیم پیشوندهایی مانند api/
استفاده میشد. اما در لاراول 11، این فایل حذف شده و مسئولیت تنظیمات مسیریابی به فایل bootstrap/app.php
منتقل شده است.🧐 پیشوند
api/
از کجا میآید؟به صورت پیشفرض، وقتی شما از فایل
routes/api.php
برای تعریف مسیرهای API استفاده میکنید، لاراول به طور خودکار پیشوند api/
را به این مسیرها اضافه میکند. این پیشوند از طریق تنظیمات در فایل bootstrap/app.php
اعمال میشود.🔍 مثال:
فرض کنید در فایل
routes/api.php
یک مسیر به نام test
تعریف کردهاید:Route::get('test', function() {
return "Hi";
});
در این صورت، برای دسترسی به این مسیر باید از
http://127.0.0.1:8000/api/test
استفاده کنید.✏️ تغییر یا حذف پیشوند
api/
اگر میخواهید پیشوند
api/
را تغییر دهید یا حذف کنید، باید به سراغ فایل bootstrap/app.php
بروید و تنظیمات را به دلخواه خود تغییر دهید.🔧 تنظیمات در bootstrap/app.php
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
apiPrefix: '', // با تنظیم این مقدار به خالی، پیشوند /api حذف میشود
)
->create();
با تنظیم apiPrefix به مقدار خالی ('')، دیگر مسیرهای API شما بدون پیشوند api/ خواهند بود. به این معنی که برای دسترسی به مسیر test فقط کافیست از http://127.0.0.1:8000/test استفاده کنید.
چرا
http://127.0.0.1:8000/test
خطای 404 میدهد؟اگر این مسیر بدون پیشوند
api/
خطای 404 میدهد، به این دلیل است که پیشوند api/
به صورت پیشفرض به مسیرهای API شما اضافه شده است. برای رفع این مشکل، باید یا پیشوند را حذف کنید یا مسیر را به همراه پیشوند درست وارد کنید.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
David Thomas and Andrew Hunt
این کتاب توصیههای عملی و حرفهای برای توسعهدهندگان ارائه میدهد. موضوعاتی مانند مسئولیتپذیری شخصی و توسعه حرفهای تا تکنیکهای معماری را پوشش میدهد. با وجود اینکه در سال ۱۹۹۹ نوشته شده است، هنوز در بسیاری از جنبهها معتبر است. ویژگی منحصر به فرد این کتاب این است که به صورت عملی با مجموعهای از نکات برای بهبود فرآیند توسعه به شما آموزش میدهد.
David Farley
این کتاب بر ساخت نرمافزار عالی تمرکز دارد و نویسنده یک چارچوب محکم برای اتصال بهترین شیوهها مانند Continuous Delivery (CD)، معماری شش ضلعی و Test-Driven Development به ایدههای اصلی در مهندسی نرمافزار ارائه میدهد. او همچنین در مورد تاریخچه توسعه نرمافزار و ایدههایی که صنعت را تغییر دادهاند، مینویسد.
Steve McConnell
یکی از کتابهایی که بیش از ۱۵ سال پیش نوشته شده و هنوز معتبر است. این کتاب به طراحی، کدنویسی، اشکالزدایی و تست میپردازد. در بیش از ۹۰۰ صفحه، نویسندگان نحوه نوشتن برنامهها برای مردم اول و سپس برای کامپیوترها، چگونگی تقسیم کد به دامنهها و چگونگی تسلط بر ویژگیهای انسانی بهترین برنامهنویسان (تواضع، کنجکاوی و مهمتر از همه، کنترل اگو) را توضیح میدهند.
Titus Winters, Tom Manshreck, and Hyrum Wright
این کتاب درباره برنامهنویسی نیست، بلکه در مورد شیوههای مهندسی در گوگل برای حفظ و سلامت کدپایه آنها است. در این کتاب، تفاوت بین مهندسی نرمافزار و برنامهنویسی، اهمیت قانون بیانسه، و چگونگی تست صحیح چیزها و انتشار کوچک و مکرر را خواهید آموخت.
Eric Freeman
این کتاب الگوهای طراحی اصلی نرمافزار را برای ایجاد طراحیهای انعطافپذیرتر، شیکتر و قابل استفاده مجدد بدون نیاز به کشف مجدد راهحلهای طراحی توصیف میکند. این کتاب به سبک کتابهای For Dummies نوشته شده است، به طوری که برای مبتدیان قابل فهم باشد.
Aditya Bhargava
این کتاب به زبانی ساده درباره کاربرد الگوریتمهای استاندارد در مسائل روزمره توسعهدهندگان توضیح میدهد. از مرتبسازی و جستجو شروع میکند و سپس به فشردهسازی دادهها و هوش مصنوعی با نمونه کدهایی در پایتون میپردازد. احتمالاً بهترین کتاب برای شروع یادگیری الگوریتمها است.
Martin Kleppman
این کتاب مفاهیم پیشرفته داده مانند پایگاههای داده و مدلهای داده و مفاهیم توزیعشده مانند تراکنشها، تکرار، سازگاری و غیره را توضیح میدهد. این کتاب یکی از تأثیرگذارترین کتابها در این دسته است.
Steve Freeman
نویسندگان رویههای خود، اهداف طراحی و برخی ابزارهایی که برای انجام کار استفاده میکنند را شرح میدهند. در یک مثال گسترده، خواهید فهمید که چگونه TDD در چند سطح عمل میکند، با استفاده از تستها برای هدایت ویژگیهای کد و ساختار شیءگرا و استفاده از اشیاء شبیهسازیشده برای یافتن و سپس تعریف پیوندها بین اشیاء.
John Ousterhout
این کتاب توضیح میدهد که چگونه سیستمهای نرمافزاری پیچیده را به قطعات قابل پیادهسازی مستقل تقسیم کنیم. سپس به مسائل فلسفی در مورد نحوه برخورد با فرآیند طراحی نرمافزار میپردازد و فهرستی از راهنماییهای طراحی برای دنبال کردن ارائه میدهد. این کتاب همچنین فهرستی از علائم هشدار برای طراحی بد ارائه میدهد. این کتاب یک همراه عالی برای Clean Code است زیرا دیدگاه متفاوتی ارائه میدهد.
📁 #Skills
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding