| کانال توسعه‌دهندگان لاراول |
1.6K subscribers
54 photos
114 links
⭕️ کانال توسعه‌دهندگان لاراول دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
Statamic 🤗

یک cms ( سیستم مدیریت محتوا ) با زبان php و البته فریمورک جذاب laravel

⭕️ ویژگی ها :

Flat File CMS :
درواقع در استاتامیک خبری از دیتابیس نیست و از فایل های yaml برای ذخیره سازی اطلاعات استفاده میشه

Markdown Support :
این cms از مارک داون پشتیبانی میکنه و شما میتونید صفحه هاتون رو با markdown بسازید

Extentions:
استاتامیک از پلاگین ها و افزونه ها پشتیبانی میکند

Controll Panel:
بهتون یه کنترل پنل جذاب میشه که واقعا هم از لحاظ ظاهری جذابه هم از لحاظ کارایی :)

میتونید بیشتر خودتون توی سایت خودش به آدرس
https://statamic.com
و داکیومنت هاش به آدرس
https://statamic.dev

✳️✳️ تجربه شخصی من از این cms اینجوری بود که اولش خیلی نمیدونید داستان چیه 😂 ولی یکمی که باهاش کار کنید دستتون میاد ولی خب همین که روی فایل هست و دیتابیس نداره ممکنه همون اوایل یکمی اذیتتون کنه :)

👤 Matin Soleymani

💎 Channel: @DevelopixLaravel
👍12🔥31
Forwarded from Developix Support
🔴 شتابان هاست 🔴

🔰 تخفیف ویژه 12 درصدی برای
خرید انواع🔹هاست🔹سرور
در شتابان هاست به مناسبت فرا رسیدن عید نوروز 🥳:


https://shetabanhost.com/
🌟 کد تخفیف اختصاصی:
shetabanhost


🔗 https://shetabanhost.com/

🌐 پشتیبانی ۲۴ ساعته شتابان هاست👇👇

☎️ 024-91311031
💎 Channel: @shetabanhostcom
30👍24🔥15
💢 معرفی EditorConfig

یک ابزار Standardizing است که برای تنظیم سبک کدنویسی و یکپارچه‌سازی پروژه استفاده می‌شود. این فایل به ادیتورها و IDEها می‌گوید که چگونه باید با فایل‌های کد برخورد کنند، از جمله تنظیماتی مانند استفاده از فاصله‌های تورفتگی، نوع پایان خط، و فضای خالی در انتهای خط و ...

🔺چرا باید از EditorConfig استفاده کنیم؟

1. یکپارچگی سبک کدنویسی: استفاده از EditorConfig به تیم‌های توسعه کمک می‌کند تا سبک کدنویسی یکپارچه‌ای را حفظ کنند، که این باعث افزایش خوانایی کد و کاهش اشکالات ناشی از تفاوت‌های سبک کدنویسی می‌شود.

2. استانداردسازی تنظیمات: با استفاده از یک فایل editorconfig، تنظیمات مختلفی مانند تورفتگی، نوع پایان خط و ... به صورت یکپارچه و مشخص در کل پروژه تعیین می‌شود.

3. سهولت استفاده: استفاده از یک فایل editorconfig باعث می‌شود تا تنظیمات مورد نیاز توسعه‌دهندگان به صورت خودکار توسط ادیتورها و IDEها اعمال شود، بدون نیاز به هر بار تنظیم دستی آن‌ها.

🔺راهنمای استفاده در Laravel:

1. ایجاد فایل editorconfig: در ریشه پروژه Laravel، یک فایل به نام editorconfig ایجاد کنید.

2. تعریف تنظیمات: در این فایل، تنظیمات مورد نیاز خود را تعریف کنید، مانند تورفتگی، نوع پایان خط و ...

3. استفاده در ادیتورها و IDEها: بعد از ایجاد فایل editorconfig، تنظیمات مشخص شده در آن به صورت خودکار توسط ادیتورها و IDEها اعمال می‌شود.

📌 با اینکه استفاده از EditorConfig به نظم و یکپارچگی کد کمک می‌کند، اما بهتر است تا با اعضای تیم خود از استفاده از آن مطمئن شوید و در مورد تنظیمات مورد نیاز توافق کنید.

💠 بررسی یک مثال از تعریف فایل EditorConfig

👤 Maryam

💎 Channel: @DevelopixLaravel
👍7
📍منابع آموزشی لاراول

- داکیومنت خود لاراول

- سایت Laracasts: این سایت آموزش‌های پیشرفته و کاربردی با استفاده از ویدیوهای تخصصی داره.

- سایت Treehouse: به کمک این سایت می‌توان با ابزار‌ها و تکنولوژی‌های مرتبط به لاراول و مبانی آن آشنا شد. شیوه دوره‌های این سایت به این شکل است که پایان هر بخش دارای تمرین و پرسش و پاسخ هست همچنین آزمون‌هایی برای تمرین کردن داره.

- سایت لاراول نیوز: به کمک این سایت می‌توان فورا از اخبار و تغییرات فریمورک دوست‌داشتنی‌مون اطلاع پیدا کنیم (:

- سایت لاراول تریکس: این سایت ترفند و تریک‌هایی مفید داره که به روند پروژه کمک می‌کنه

🔴 کانال‌های یوتیوب مناسب لاراول:
→ Matt Socha
→ Code With Dary
→ freeCodeCamp
→ Traversy Media
→ Laraveller
→ Laravel Daily
→ Laracon EU
→ Laracon AU
→ Laracon Online
→ Laracasts
→ Laravel
→ Freek Van der Herten
→ Christoph Rumpel
→ Nuno Maduro

📚 کتاب‌های پیشنهادی یادگیری لاراول:

→ Laravel: Up & Running
→ Cosuming APIs in Laravel

👤 Maryam

💎 Channel: @DevelopixLaravel
👍11🔥4
بررسی DB::transaction

تصور کنید که می‌خواهید چندین عملیات روی دیتابیس انجام دهید، مثلاً در یک فروشگاه آنلاین: ذخیره‌سازی سفارش جدید و کاهش موجودی محصولات در انبار. اگر هر یک از این عملیات جداگانه انجام شود و در یک مرحله‌ی بعدی یکی از آن‌ها با موفقیت انجام نشود، دیتابیس به حالت نامناسبی وارد می‌شود؛ به عبارت دیگر، دیتابیس در وضعیت معتبر قرار نمی گیرد.

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

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

1️⃣ تعریف تراکنش
2️⃣ اجرای عملیات
3️⃣ تایید تراکنش
4️⃣ بازگشت در صورت خطا

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

DB::transaction(function () use ($order, $cart) {
try {
// 1️⃣ تعریف تراکنش

// اجرای عملیات
$order->save(); // ذخیره سفارش

foreach ($cart->items as $item) {
$product = Product::find($item['product_id']);
$product->stock -= $item['quantity'];
$product->save(); // کاهش موجودی محصول
}

// 3️⃣ تایید تراکنش
DB::commit();
} catch (\Exception $e) {
// 4️⃣ بازگشت در صورت خطا
DB::rollBack();
// مدیریت خطا، پیام به کاربر یا انجام دیگر عملیات‌های مورد نیاز
Log::error('Error occurred during transaction: ' . $e->getMessage());
// پرتاب خطا مجدد به عنوان نیازمند پیاده‌سازی
throw $e;
}
});


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

👤 Maryam

💎 Channel: @DevelopixLaravel
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
یکی از نکات بسیار مهمی که تقریبا در تمامی زبان‌ها وجود دارد ولی برنامه‌نویسان از آن آگاه نیستند، منطق اجرای حلقه‌ها می‌باشد

در تصویر بالا می‌توانید ببینید که دو کد مشابه، که اکثرا هم حالت اول آن را می‌نویسیم، چقدر می‌تواند باعث غیربهینه بودن کد شود

نکته مهم این پست اینجاست که تمامی کد های داخل condition حلقه، در هر iteration اجرا می‌شوند و اگر حلقه‌تان از توابع داینامیک مثل count یا … استفاده می‌کند، در هر iteration شما آرایه را count می‌کنید که این بهینه نیست

💎 Channel: @DevelopixPHP
👍23
و بلاخره لاراول 11 منتشر شد😍🔥

( تیلر و تیم لاراول هدیه چهارشنبه سوری دادن😂❤️ )

📖 برای مشاهده تغییرات اعمال شده در ورژن 11 لاراول میتونید از وبلاگ لاراول بخونید

https://blog.laravel.com/laravel-11-now-available

📍 و میتونید از یوتوب لاراول توضیح کوتاهی رو ببینید

https://youtu.be/rmMCiP-iVYM?si=SyH0ESMiM4Pazw5p

📺 و ویدیو لاراکان که تیلر حرف میزنه

https://youtu.be/0g7HqfsCX4Y?si=HNXTRjNjfdHpPB3P

در پست های بعدی هم به تغییراتش میپردازیم📡😃

👤 Matin Soleymani

💎 Channel: @DevelopixLaravel
👍14👎1
📡 دو کامند خفن artisan در ورژن 11 :)


💡 نمایش اطلاعات یک مدل ( مثل Attributes ، Relations )
دستور :
php artisan model:show <ModelName>


🛟 مثال عملی :
php artisan model:show User

🛑 به خاطر اینکه خروجی بلند بالایی داریم در اینجا مثال خروجی رو نمیزارم ( خودتون برید تست کنید )



💡 نمایش اطلاعات یک تیبل از دیتابیس ( مثل سایز ، تعداد کالم ها ، ایندکس ها ، کالم ها )
دستور :
php artisan db:table <TableName>


🛟 مثال عملی :
php artisan db:table users

🛑 به خاطر اینکه خروجی بلند بالایی داریم در اینجا مثال خروجی رو نمیزارم ( خودتون برید تست کنید )


✂️ یک نکته هم از دیتابیس در ورژن یازده بگم که در ورژن یازده به صورت دیفالت از دیتابیس لوکال sqlite استفاده میشه ( صد درصد امکان تغییر هم هست )


📝 باز در ادامه به برخی دیگر از فیچر های اضافه شده میپردازیم :) ❤️

👤 Matin Soleymani

💎 Channel: @DevelopixLaravel
🔥8👍7
❇️ و laravel herd الان در ویندوز :)

الان میتونید وارد سایت herd شده و نسخه ویندوزی laravel herd رو دانلود کنید

در تصویر کامل مشخص هست که herd چیکار میکنه

آدرس :
herd.laravel.com

👤 Matin Soleymani

💎 Channel: @DevelopixLaravel
🔥7👎5👍3
🔐 پکیج Laravel Permissions یک کتابخانه مدیریت و ساماندهی کاربران بر اساس سطوح و درجات کاربری است و اعطای مجوز به کاربران و سلب مجوز از آن‌ها را به آسانی وارد اکوسیستم لاراول می‌کند.

😊 برای درک راحت‌تر ساختار آشنای این پکیج در دنیای لاراول می‌توانید به نمونه‌کد زیر نگاه کنید:
// افزودن دسترسی به صورت مستقیم به کاربر
$user->givePermissionTo('edit articles');

// افزودن دسترسی با نقش به کاربر
$user->assignRole('writer');
$role->givePermissionTo('edit articles');

// بررسی داشتن دسترسی
$user->can('edit articles');


💎 Channel: @DevelopixLaravel
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
⭕️ آموزش‌های عمومی PHP

💠 در این سری از آموزش‌های زبان PHP به موارد عمومی این زبان از جمله Enum ها و Closure ها و Arrow Function ها و سایر موارد مرتبط با زبان PHP پرداخته شده است.
👍5🔥3
معرفی پکیج Share Error در لاراول

پکیج Share Error به شما امکان می‌دهد به راحتی خطاها و استثناهای رخ داده در برنامه لاراولی خود را با دیگران به اشتراک بگذارید. این پکیج کمک می‌کند تا اطلاعات خطاها را به صورت کارآمدتر مدیریت کنند و سریع‌تر به حل مشکلات برسید.

ویژگی‌ها و مزایای پکیج Share Error

1. اشتراک‌گذاری آسان خطاها:
این پکیج به شما اجازه می‌دهد تا خطاها و استثناهای رخ داده در برنامه خود را به راحتی با تیم توسعه و یا سایر افراد به اشتراک بگذارید.

2. ایجاد لینک‌های اشتراک‌گذاری:
پکیج Share Error به طور خودکار لینک‌های کوتاهی ایجاد می‌کند که حاوی اطلاعات خطا هستند. این لینک‌ها می‌توانند از طریق ایمیل، پیام‌رسان‌ها و یا هر روش دیگری به اشتراک گذاشته شوند.

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

🔹 نصب پکیج:


   composer require vendor/share-error


   php artisan vendor:publish --provider="Vendor\ShareError\ServiceProvider"


🔖 #Laravel, #PHP, #لاراول

👤 Maryam

💎 Channel: @DevelopixLaravel
👍71👎1
💢 آموزش Lifecycle Hooks در Livewire

لایو وایر یکی از فریم‌ورک‌های جذاب برای توسعه رابط‌های کاربری پویا با استفاده از Laravel است. یکی از قابلیت‌های مهم و مفید این فریم‌ورک، Lifecycle Hooks است که به شما امکان می‌دهد در زمان‌های مختلف چرخه حیات کامپوننت خود، عملیات خاصی را انجام دهید. در این مطلب، با انواع Lifecycle Hooks در Livewire و نحوه استفاده از آنها آشنا می‌شویم.

بررسی Lifecycle Hooks

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

🔖 انواع Lifecycle Hooks

در Livewire، Lifecycle Hooks به چند دسته تقسیم می‌شوند:

1. Mounting:
- mount()
- boot()
- booted()

2. Updating:
- updating($name, $value)
- updated($name, $value)

3. Rendering:
- render()

4. Destroyed:
- destroy()

📌 مثال:

برای درک بهتر نحوه استفاده از Lifecycle Hooks، یک کامپوننت ساده Livewire می‌سازیم که یک شمارنده را مدیریت می‌کند و از Lifecycle Hooks برای انجام عملیات مختلف استفاده می‌کند.

قدم 1: ایجاد کامپوننت Livewire

ابتدا یک کامپوننت Livewire با نام Counter ایجاد می‌کنیم:
php artisan make:livewire Counter


قدم 2: تعریف کامپوننت با استفاده از Lifecycle Hooks

در فایل Counter.php، متغیرها و Lifecycle Hooks مورد نیاز را تعریف می‌کنیم:
use Livewire\Component;

class Counter extends Component
{
public $count = 0;

public function mount()
{
// این متد در زمان ایجاد کامپوننت فراخوانی می‌شود
$this->count = 10; // مقدار اولیه شمارنده را تنظیم می‌کنیم
}

public function updating($name, $value)
{
// این متد قبل از به‌روزرسانی هر ویژگی کامپوننت فراخوانی می‌شود
\Log::info("Updating $name to $value");
}

public function updated($name, $value)
{
// این متد بعد از به‌روزرسانی هر ویژگی کامپوننت فراخوانی می‌شود
\Log::info("Updated $name to $value");
}

public function increment()
{
$this->count++;
}

public function render()
{
// این متد در هر بار رندر شدن کامپوننت فراخوانی می‌شود
return view('livewire.counter');
}
}


قدم 3: ایجاد ویو برای کامپوننت
در فایل counter.blade.php، ساختار HTML مورد نیاز را تعریف می‌کنیم:

<div>
<h1>Count: {{ $count }}</h1>
<button wire:click="increment">Increment</button>
</div>


📌 توضیحات
- mount():
در زمان ایجاد کامپوننت فراخوانی می‌شود و برای تنظیم مقادیر اولیه مناسب است.

- updating($name, $value):
قبل از به‌روزرسانی هر ویژگی فراخوانی می‌شود و می‌توان از آن برای لاگ کردن یا اعتبارسنجی استفاده کرد.

- updated($name, $value):
بعد از به‌روزرسانی هر ویژگی فراخوانی می‌شود و می‌توان از آن برای انجام عملیات بعد از به‌روزرسانی استفاده کرد

- render():

در هر بار رندر شدن کامپوننت فراخوانی می‌شود

🔖 #Laravel, #PHP, #لاراول

👤 Maryam

💎 Channel: @DevelopixLaravel
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
در حال تهیه یک دوره آموزشی جامع و کامل برای فریم‌ورک قدرتمند لاراول هستیم. این دوره به صورت گام به گام و از مباحث پایه شروع شده و به تدریج به مباحث پیشرفته‌تر می‌پردازد.

این دوره مناسب برای همه، حتی کسانی که هیچ آشنایی قبلی با لاراول ندارند. تنها پیش‌نیاز این دوره، آشنایی با زبان PHP و معماری MVC است.

نظرات و پیشنهادات شما برای بهبود دوره بسیار مهم است و ما از آن‌ها استقبال می‌کنیم.

در ادامه سرفصل‌های این دوره آورده شده:

فصل 0: مقدمات
1- معرفی لاراول
2- نصب و راه‌اندازی لاراول
3- ساختار پوشه‌ها و فایل‌ها در لاراول
4- تنظیمات اولیه و محیط‌های کاری

فصل 1: Routing

1- معرفی متد های روتینگ
2- میدلورها

فصل 2: Controllers
1- ایجاد و استفاده از کنترلرها
2- متدهای کنترلر
3- کنترلرهای Resource
4- کنترلرهای API
5- ‏Dependency Injection در کنترلرها

فصل 3: Views
1- موتور قالب‌سازی Blade
2- ساختار و سینتکس Blade
3- شامل کردن ویوها و کامپوننت‌ها
4- مدیریت داده‌ها در ویوها

فصل 4: مدل‌ها و Eloquent ORM
1- معرفی Eloquent
2- تعریف مدل‌ها
3- ارتباطات بین مدل‌ها (Relations)
4- کوئری بیلدر (Query Builder)
5- ‏Accessors و Mutators
6- ‏Scopes
7- ‏Observer

فصل 5: Migrations and Database
1- تعریف و اجرای Migrationها
2- ‏Seeders و Factories
3- کار با دیتابیس‌ها و ارتباطات

فصل 6: فرم‌ها و اعتبارسنجی
1- ساخت و پردازش فرم‌ها
2- اعتبارسنجی درخواست‌ها
3- پیام‌های خطا و مدیریت آن‌ها

فصل 7: Services و Dependency Injection
1- ‏Service Container
2- سرویس‌ها و Providers
3- ‏Facades

فصل 8: امنیت (Security)
1- احراز هویت (Authentication)
2- مجوزها (Authorization)
3- رمزنگاری (Encryption)
4- جلوگیری از CSRF و XSS

فصل 9: تست و Debugging
1- معرفی ابزارهای تست لاراول
2- ‏Unit Testing
3- ‏Integration Testing
4- ‏Debugging و خطایابی

فصل 10: Optimization and Performance
1- کشینگ (Caching)
2- ‏Queues و Background Jobs
3- بهینه‌سازی کوئری‌ها
4- استفاده از Octane

فصل 11: توسعه پیشرفته
1-‏ Package Development
2- توسعه RESTful API
3- استفاده از رویدادها (Events) و Listenerها
4- مدیریت فایل‌ها و Storage

فصل 12: بررسی هسته لاراول
1- ساختار هسته لاراول
2- بررسی و توضیح کلاس‌های کلیدی
3- بررسی چرخه درخواست (Request Lifecycle)

سرفصل ها ممکن است در آینده تغییر کند و مواردی به آن اضافه شود.
لطفا هر گونه کمبود یا ایراد در سرفصل ها را در بخش کامنت ها درمیان بگذارید.

🔖 #Laravel, #PHP, #لاراول

👤 AmirHossein

💎 Channel: @DevelopixLaravel
🔥5👍42
فصل صفر - مقدمات

بخش اول - معرفی لاراول:

لاراول
یک فریم‌ورک PHP متن‌باز و قدرتمند است که برای توسعه برنامه‌های وب طراحی شده است.
لاراول از ساختار MVC پیروی می‌کند که به توسعه‌دهندگان امکان می‌دهد کدهای خود را به صورت منظم و خوانا سازماندهی کنند.
این فریم‌ورک همچنین با اصول SOLID و برنامه‌نویسی شی‌گرا (OOP) هماهنگ است، که به افزایش قابلیت نگهداری و توسعه‌پذیری کد کمک می‌کند.
این فریم‌ورک ابزارها و قابلیت‌های بسیاری را برای تسهیل فرآیند توسعه ارائه می‌دهد، از جمله:

‏Routing : سیستم مسیریابی قدرتمند برای مدیریت درخواست‌های وب.

‏Eloquent ORM : سیستم ORM پیشرفته برای تعامل با پایگاه داده به صورت شیء‌گرا.

‏Artisan Console : رابط خط فرمان برای اجرای دستورات و وظایف مختلف.

‏Middleware : مکانیزمی برای فیلتر کردن درخواست‌ها و پاسخ‌ها.

‏Queues : پشتیبانی از صف‌ها برای مدیریت کارهای پس‌زمینه.

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

------
بخش دوم - نصب و راه‌اندازی لاراول:

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

- PHP >= 8.2
- BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML PHP Extensions

برای نصب لاراول، می‌توانید از Composer استفاده کنید. Composer یک ابزار مدیریت وابستگی‌ها در PHP است. برای نصب Composer به سایت getcomposer.org مراجعه کرده و دستورالعمل‌های نصب را دنبال کنید.

پس از نصب Composer، می‌توانید لاراول را با استفاده از دو روش زیر نصب کنید:
composer create-project laravel/laravel myproject

یا
composer global require laravel/installer
laravel new myproject


با اجرای این دستور، یک پروژه جدید لاراول در پوشه‌ای به نام myproject ایجاد می‌شود.
پس از اتمام نصب، می‌توانید وارد پوشه پروژه شده و سرور توسعه لاراول را با دستور زیر اجرا کنید:
cd myproject
php artisan serve


سرور توسعه لاراول به صورت پیش‌فرض روی پورت 8000 اجرا می‌شود و می‌توانید با مراجعه به آدرس http://localhost:8000 برنامه خود را مشاهده کنید.

🔖 #Laravel, #PHP, #لاراول

👤 AmirHossein

💎 Channel: @DevelopixLaravel
👍123
فصل صفر - مقدمات

بخش سوم - ساختار پوشه‌ها در لاراول :


پروژه لاراول دارای ساختار پوشه‌ای منظم و مشخصی است. در ادامه، به توضیح مختصر هر یک از پوشه‌ها و فایل‌های مهم می‌پردازیم:

‏app/
شامل کدهای اصلی برنامه است. این پوشه شامل زیرپوشه‌های مدل‌ها (Models)، کنترلرها (Controllers)، میان‌افزارها (Middleware) و غیره می‌باشد.

‏bootstrap/
شامل فایل‌های بوت‌استرپینگ برنامه (مانند بوت کردن ServiceProviderها و MiddleWareها) و تنظیمات اولیه است.

‏config/
شامل فایل‌های تنظیمات برنامه است.

‏database/

شامل فایل‌های مرتبط با پایگاه داده مانند مایگریشن ها (Migrations)، Factory ها و Seeder ها می باشد.

‏public/
شامل فایل‌های عمومی قابل دسترس از طریق وب است. فایل‌های CSS، JavaScript، تصاویر و فایل اصلی index.php در این پوشه قرار دارند.

‏resources/
شامل منابع برنامه مانند ویوها (views)، فایل‌های زبان و فایل‌های استاتیک است.

‏routes/
شامل فایل‌های مربوط به مسیریابی برنامه است.

‏storage/
شامل فایل‌های ذخیره‌سازی مانند لاگ‌ها، کش‌ها و فایل‌های آپلود شده است.

‏tests/
شامل تست‌های واحد و یکپارچه‌سازی برنامه است.

‏vendor/
شامل کتابخانه‌ها و پکیج‌های نصب شده توسط Composer است.

بخش چهارم - تنظیمات اولیه :

لاراول امکان تنظیمات مختلف برای محیط‌های کاری مختلف (مثل توسعه، تست، و تولید) را فراهم می‌کند. فایل تنظیمات اصلی .env نام دارد و در ریشه پروژه قرار دارد.
در این فایل، می‌توانید تنظیمات مربوط به پایگاه داده، سرور ایمیل، کش و سایر تنظیمات محیطی را تعیین کنید.

با تغییر مقدار APP_ENV می‌توانید محیط کاری را تغییر دهید. مقادیر معمول برای این متغیر عبارتند از:

‏local (توسعه)،
‏production (تولید)،
‏ staging (آزمایش)،


همچنین، می‌توانید تنظیمات خاصی را برای هر محیط در فایل‌های تنظیمات موجود در پوشه config/ مشخص کنید.

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

🔖 #Laravel, #PHP, #لاراول

👤 AmirHossein

💎 Channel: @DevelopixLaravel
👍16👎32🔥2
فصل یک - Routing

بخش اول - روتینگ چیست؟


مسیریابی
(Routing) یکی از مهم‌ترین و پایه‌ای‌ترین قابلیت‌ها به شمار می‌آید که امکان مدیریت درخواست‌های ورودی به برنامه را فراهم می‌کند. مسیریابی در واقع تعیین می‌کند که درخواست‌های کاربران به کدام قسمت از برنامه ارسال شوند و چه عملیاتی روی آن‌ها انجام شود. به عبارت دیگر، مسیریابی مسئولیت اتصال URLهای مختلف به کنترلرها و اکشن‌های مشخصی را بر عهده دارد.

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

چندین فایل اصلی برای مدیریت مسیرها وجود دارد که هر کدام کاربرد خاص خود را دارند. این فایل‌ها در دایرکتوری routes قرار دارند و به شما این امکان را می‌دهند که مسیرهای مختلف برنامه خود را سازماندهی و مدیریت کنید. در ادامه توضیح مختصری از هر فایل ارائه می‌شود:

1- ‏web.php
این فایل برای تعریف مسیرهای وب استفاده می‌شود. مسیرهای تعریف شده در این فایل معمولاً به کنترلرهایی متصل می‌شوند که صفحات وب را رندر می‌کنند.
Route::get('/', function () {
return view('welcome');
});


2- ‏api.php

این فایل برای تعریف مسیرهای API استفاده می‌شود. این مسیرها معمولاً برای ارائه داده به برنامه‌های فرانت‌اند یا سایر سرویس‌ها استفاده می‌شوند.
Route::get('/', function () {
return response()->json(["hello"]);
});


3- ‏console.php
این فایل برای تعریف فرمان‌های کنسول (artisan commands) استفاده می‌شود. شما می‌توانید فرمان‌های کنسول خود را در این فایل تعریف کنید که از طریق خط فرمان قابل اجرا هستند. این فرمان‌ها به شما اجازه می‌دهند تا کارهای مختلفی مانند پاکسازی دیتابیس یا ایجاد کاربران نمونه را انجام دهید.
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->describe('Display an inspiring quote');


4- ‏channels.php
این فایل برای تعریف کانال‌های بروزرسانی لحظه‌ای (broadcasting channels) استفاده می‌شود. این کانال‌ها برای ارسال پیام‌ها و داده‌ها به صورت لحظه‌ای به مرورگرهای وب یا سایر سرویس‌ها استفاده می‌شوند. شما می‌توانید دسترسی به کانال‌ها را در این فایل کنترل کنید.
Broadcast::channel('order.{orderId}', function ($user, $orderId) {
return $user->id === Order::find($orderId)->user_id;
});


در این فصل تنها با route های web و api آشنا می شویم.

متد های Route از کلاس خاصی(Facade-فَساد) با نام Route در دسترس هستند.
use Illuminate\Support\Facades\Route;


در فساد Route متد های متعددی وجود دارد که به تمامی آنها خواهیم پرداخت. اما برخی در این فصل توضیح داده می شود و برخی دیگر در فصل های آینده.

🔖 #Laravel, #PHP, #لاراول, #فصل_۱

👤 AmirHossein

💎 Channel: @DevelopixLaravel
🔥74
فصل یک - Routing

بخش دوم - معرفی متد های روتینگ - قسمت اول


در این قسمت به 8 تا از پر کاربرد ترین و اصلی ترین متد های موجود در فساد Route می پردازیم:

1- متد get برای تعریف مسیری استفاده می‌شود که به درخواست‌های HTTP GET پاسخ می‌دهد. این نوع درخواست معمولاً برای دریافت اطلاعات استفاده می‌شود.
Route::get('/users', function () {
return 'List of users';
});

کد بالا به معنی این است که اگر درخواستی را با متد GET به آدرس domain.example/users بدهیم، تابع ناشناس داده شده به متد(اکشن) اجرا خواهد شد.

حال فرض کنید می‌خواهیم مسیری ایجاد کنیم که اطلاعات یک کاربر خاص را بر اساس شناسه (ID) او نمایش دهد. در این صورت، می‌توانیم از پارامترهای داینامیک استفاده کنیم:
Route::get('/user/{id}', function ($id) {
return "User ID is $id";
});

در اینجا، {id} یک پارامتر داینامیک است که می‌تواند هر مقداری باشد. این مقدار از URL استخراج شده و به تابع بسته می‌شود.
توجه داشته باشید که پارامتر id یک پارامتر اجباری است و درصورتی که در url وارد نشود route ما اجرا نخواهد شد.

برای پارامتر های اختیاری می توان به صورت زیر عمل کرد:
Route::get('/user/{id?}', function ($id = 0) {
if ($id == 0){
return "Hello!";
}
return "User ID is $id";
});

پارامتر {id?} یک پارامتر اختیاری است و حتی اگر آن را وارد نکنیم route ما اجرا خواهد شد، اما توجه داشته باشید که مقدار پیشفرض آن را در اکشن تعریف نمایید.

پارامتر های داینامیک برای تمامی متد ها در دسترس هستند.

2- متد post برای تعریف مسیری استفاده می‌شود که به درخواست‌های HTTP POST پاسخ می‌دهد. این نوع درخواست معمولاً برای ارسال داده به سرور و ایجاد منابع جدید استفاده می‌شود.

Route::post('/users', function () {
return 'User created';
});


3- متد put برای تعریف مسیری استفاده می‌شود که به درخواست‌های HTTP PUT پاسخ می‌دهد. این نوع درخواست معمولاً برای به‌روزرسانی کامل یک منبع موجود استفاده می‌شود.
Route::put('/users/{id}', function ($id) {
return 'User ' . $id . ' updated';
});


4- متد patch برای تعریف مسیری استفاده می‌شود که به درخواست‌های HTTP PATCH پاسخ می‌دهد. این نوع درخواست معمولاً برای به‌روزرسانی جزئی یک منبع موجود استفاده می‌شود.
Route::patch('/users/{id}', function ($id) {
return 'User ' . $id . ' partially updated';
});


5- متد delete برای تعریف مسیری استفاده می‌شود که به درخواست‌های HTTP DELETE پاسخ می‌دهد. این نوع درخواست معمولاً برای حذف یک منبع موجود استفاده می‌شود.
Route::delete('/users/{id}', function ($id) {
return 'User ' . $id . ' deleted';
});


6- متد options برای تعریف مسیری استفاده می‌شود که به درخواست‌های HTTP OPTIONS پاسخ می‌دهد. این نوع درخواست برای بازگشت اطلاعاتی در مورد ارتباطات مجاز برای یک منبع خاص استفاده می‌شود.
Route::options('/users', function () {
return ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
});


7- متد any برای تعریف مسیری استفاده می‌شود که به تمامی انواع درخواست‌های HTTP پاسخ می‌دهد. این نوع مسیر معمولاً برای مسیرهایی استفاده می‌شود که باید به تمامی درخواست‌ها پاسخ دهند.
Route::any('/contact', function () {
return 'Contact form';
});


8- متد match به شما اجازه می‌دهد تا یک مسیر را برای چندین نوع درخواست HTTP تعریف کنید. این متد زمانی مفید است که می‌خواهید یک مسیر خاص به چندین متد HTTP مانند GET و POST پاسخ دهد.
Route::match(['get', 'post'], '/contact', function () {
//
});

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

متد های بالا در فایل های web.php و api.php قابل استفاده هستند.

🔖 #Laravel, #PHP, #لاراول, #فصل_۱

👤 AmirHossein

💎 Channel: @DevelopixLaravel
👍11🔥43
فصل یک - Routing

بخش دوم - معرفی متد های روتینگ - قسمت دوم


در ادامه معرفی متد های Routing به 9 متد دیگر از فساد Route می پردازیم. این متد ها برای اعتبارسنجی پارامتر های داینامیک دریافتی از URL، کاربرد دارند.
در ادامه هر یک از این متد ها را با مثال معرفی میکنیم:

1- متد where به شما امکان می‌دهد تا یک محدودیت سفارشی برای پارامترهای مسیر تعیین کنید. این محدودیت‌ها بر اساس یک الگوی منظم (regex) تعریف می‌شوند. به عنوان مثال، می‌توانید تعیین کنید که پارامتر id باید عددی باشد.
Route::get('user/{id}', function ($id) {
return "User ID: $id";
})->where('id', '[0-9]+');

در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

2- متد whereAlpha تضمین می‌کند که پارامترهای مشخص شده فقط حروف الفبایی باشند. یعنی پارامتر مورد نظر باید فقط شامل حروف باشد و هیچ عدد یا کاراکتر دیگری نباید در آن باشد.
Route::get('user/{name}', function ($name) {
return "User Name: $name";
})->whereAlpha('name');

در این مثال، پارامتر name باید فقط شامل حروف باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

3- متد whereAlphaNumeric پارامترها را محدود به حروف و اعداد می‌کند. یعنی پارامتر مورد نظر می‌تواند شامل حروف و اعداد باشد ولی هیچ کاراکتر خاصی نباید در آن باشد.
Route::get('product/{code}', function ($code) {
return "Product Code: $code";
})->whereAlphaNumeric('code');

در این مثال، پارامتر code باید فقط شامل حروف و اعداد باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

4- متد whereNumber پارامترها را فقط به اعداد محدود می‌کند. یعنی پارامتر مورد نظر باید فقط شامل اعداد باشد و هیچ حرف یا کاراکتر دیگری نباید در آن باشد.
Route::get('order/{id}', function ($id) {
return "Order ID: $id";
})->whereNumber('id');

در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

5- متد whereUlid پارامترها را محدود به ULID (Unique Lexicographically Sortable Identifier) می‌کند که یک نوع شناسه منحصر به فرد و مرتب شونده است.
Route::get('item/{ulid}', function ($ulid) {
return "Item ULID: $ulid";
})->whereUlid('ulid');

در این مثال، پارامتر ulid باید یک ULID معتبر باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

6- متد whereUuid پارامترها را محدود به UUID (Universally Unique Identifier) می‌کند.
Route::get('user/{uuid}', function ($uuid) {
return "User UUID: $uuid";
})->whereUuid('uuid');

در این مثال، پارامتر uuid باید یک UUID معتبر باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

7- متد whereIn تضمین می‌کند که پارامترها یکی از مقادیر تعیین شده باشند. یعنی پارامتر مورد نظر باید یکی از مقادیر مشخص شده در آرایه باشد.
Route::get('status/{state}', function ($state) {
return "Status: $state";
})->whereIn('state', ['active', 'inactive', 'pending']);

در این مثال، پارامتر state باید یکی از مقادیر active، inactive یا pending باشد، در غیر این صورت مسیر مطابقت نمی‌کند.

8- متد pattern برای تعیین یک الگوی پیش‌فرض برای پارامترهای مسیر بکار می رود. این متد برای تنظیم الگوها به طور کلی برای تمام مسیرها در برنامه استفاده می‌شود.
Route::pattern('slug', '[A-Za-z0-9-]+');

Route::get('post/{slug}', function ($slug) {
return "Post Slug: $slug";
});

این متد یک regex را به طور کلی برای تمامی پارامتر ها با نام slug تعیین میکند. به عبارتی در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.

9- متد patterns مشابه متد pattern است با این تفاوت که می توانید چندین الگوی سفارشی برای چندین پارامتر به طور همزمان تعیین کنید.
Route::patterns([
'id' => '[0-9]+',
'slug' => '[A-Za-z0-9-]+',
]);

Route::get('article/{id}/{slug}', function ($id, $slug) {
return "Article ID: $id, Slug: $slug";
});

در مثال بالا یک regex برای پارامتر های id و slug تعریف شده که در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.

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

🔖 #Laravel, #PHP, #لاراول, #فصل_۱

👤 AmirHossein

💎 Channel: @DevelopixLaravel
👍9🔥54
فصل یک - Routing

بخش دوم - معرفی متد های روتینگ - قسمت سوم


در این قسمت به سایر متد های روتینگ می پردازیم:

1- متد redirect برای ریدایرکت کردن یک URL به URL دیگر استفاده می‌شود.
Route::redirect('/from-url', '/to-url');
// OR
Route::redirect('/from-home', '/to', 301);


2- متد permanentRedirect برای ریدایرکت دائمی (کد وضعیت HTTP 301) به کار می‌رود.
Route::permanentRedirect('/from-url', '/to-url');


3- متد view برای بازگرداندن یک ویو به کار می‌رود و یک صفحه HTML را رندر می کند.
نام فایل view بدون پسوند داده می شود.
Route::view('/welcome', 'welcome');
// welcome -> resources/views/welcome.blade.php

همچنین می توانید پارامتر هایی را همراه آن ارسال کنید:
Route::view('/about', 'about', ['key' => 'value']);

در فصل های بعدی به طور مفصل درمورد view ها توضیح داده می شود.

4- متد name برای نام‌گذاری یک مسیر استفاده می‌شود که به شما امکان می‌دهد تا به سادگی به آن مسیر ارجاع دهید.
Route::get('/user/profile', $action)->name('profile');

route('profile'); // domain.example/user/profile


5- متد group برای گروه‌بندی روت‌ها و استفاده از تنظیمات مشترک بین آن‌ها به کار می‌رود.
Route::group(['prefix' => 'admin'], function () {
Route::get('/dashboard', $action);
});


6- متد domain برای تعریف روت‌های وابسته به یک دامنه خاص استفاده می‌شود.
Route::domain('api.example.com')->group(function () {
Route::get('/users', function () {
// api.example.com/users
});
// ...
});


7- متد prefix برای اضافه کردن پیشوند به یک گروه از روت‌ها به کار می‌رود.
Route::prefix('admin')->group(function () {
Route::get('/users', function () {
// domain.example/admin/users
});
// ...
});


8- متد fallback برای تعریف مسیری استفاده می‌شود که در صورتی که هیچ یک از روت‌ها مطابقت نداشته باشند، فراخوانی می‌شود.
Route::fallback(function () {
return 404;
});


9- متد current برای بازگرداندن اطلاعات مربوط به مسیر فعلی به کار می‌رود.
$currentRoute = Route::current();


10- متد currentRouteName برای بازگرداندن نام مسیر فعلی به کار می‌رود.
$routeAction = Route::currentRouteAction();


11- متد currentRouteAction برای بازگرداندن اکشن کنترلر مربوط به مسیر فعلی به کار می‌رود.
$currentRouteAction = Route::currentRouteAction();


بقیه متد های روتینگ در فصل های آینده پس از آموزش پیش نیاز ها توضیح داده می شود.

🔖 #Laravel, #PHP, #لاراول, #فصل_۱

👤 AmirHossein

💎 Channel: @DevelopixLaravel
8👍4🔥4