Crazy Dev ❤️‍🔥💻
44 subscribers
112 photos
16 videos
11 files
69 links
Senior or Crazy ?! ❤️‍🔥
Download Telegram
Laravel Eloquent Tips&Tricks

#laravel
#eloquent
#orm
Crazy Dev ❤️‍🔥💻 pinned «توصیه هایی به برنامه نویسان تازه کار بیش از 20 سال در حوزه برنامه نویسی بودم. امروز میخام چند توصیه به جونیورها کنم که اگر جدی بگیرند مسیر هموار تری در رسیدن به اهدافشون خواهند داشت: ۱. قرار نیست تو شش ماه به یک برنامهنویس حرفهای تبدیل بشید. یادگیری برنامهنویسی…»
SQL Interview Questions

#sql
#interview
❤1
Docker Tips&Tricks

#docker
#deployment
❤1
CICD / Github Actions

#github
#cicd
Laravel Authentication Tips&Tricks

#laravel
#authentication
Laravel Deployment Checklist

#laravel
#deployment
Linux Terminal Commands

#linux
#command
Laravel New Command

php artisan dev

#php
#laravel
#artisan
#development
❤1
Laravel DB::listen(...)

DB::listen() hooks into every SQL query Laravel executes and provides the SQL, bindings, and execution time. Register one listener in a service provider to log slow queries or investigate N+1 problems across the application.

https://www.linkedin.com/posts/povilas-korop-laravel-developer_laravel-tip-dblisten-hooks-into-every-share-7480195268878057472-do-U
❤1
‏Repository Pattern در پروژه‌های لاراول 🧱

یکی از چیزهایی که پروژه‌های لاراول بزرگ را قابل‌نگهداری‌تر می‌کند، جدا کردن منطق دسترسی به دیتابیس از باقی لایه‌هاست. این‌جاست که Repository Pattern خیلی کمک می‌کند.

ایده ساده است: به‌جای این‌که کنترلر مستقیم با Model و کوئری‌ها درگیر شود، با یک اینترفیس صحبت می‌کند. پشت این اینترفیس هر وقت خواستیم می‌توانیم Eloquent را عوض کنیم، کش اضافه کنیم یا منبع داده را تغییر بدهیم، بدون این‌که کنترلر بشکند. 🔧

۱) تعریف Interface برای Repository
<?php

namespace App\Repositories;

interface UserRepositoryInterface
{
public function paginate(int $perPage = 15);

public function findById(int $id);

public function create(array $data);
}


۲) پیاده‌سازی با Eloquent
<?php

namespace App\Repositories;

use App\Models\User;

class EloquentUserRepository implements UserRepositoryInterface
{
public function paginate(int $perPage = 15)
{
return User::query()->latest()->paginate($perPage);
}

public function findById(int $id)
{
return User::query()->findOrFail($id);
}

public function create(array $data)
{
return User::query()->create($data);
}
}


۳) Bind کردن در Service Container لاراول
این کار را معمولاً در AppServiceProvider انجام می‌دهیم:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Repositories\UserRepositoryInterface;
use App\Repositories\EloquentUserRepository;

class AppServiceProvider extends ServiceProvider
{
public function register(): void
{
$this->app->bind(UserRepositoryInterface::class, EloquentUserRepository::class);
}
}


حالا هرجا UserRepositoryInterface را type-hint کنیم، به‌طور خودکار EloquentUserRepository تزریق می‌شود. این همان قدرت Dependency Injection در لاراول است. ⚡️

۴) استفاده در Controller تمیزتر
<?php

namespace App\Http\Controllers;

use App\Repositories\UserRepositoryInterface;
use App\Http\Requests\StoreUserRequest;

class UserController extends Controller
{
public function __construct(
private readonly UserRepositoryInterface $users
) {}

public function index()
{
$users = $this->users->paginate(20);

return view('users.index', compact('users'));
}

public function store(StoreUserRequest $request)
{
$this->users->create($request->validated());

return redirect()->route('users.index');
}
}


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

• تست‌نویسی را ساده‌تر می‌کند (می‌توان Mock از Repository ساخت) ✅
• وابستگی به Eloquent را از سطح کنترلر کم می‌کند ✅
• تغییرات دیتابیس یا اضافه‌کردن لایه cache را راحت‌تر می‌کند ✅

برای مطالعه عمیق‌تر، مستندات Service Container لاراول را ببینید:
https://laravel.com/docs/container

کم‌کم که پروژه بزرگ‌تر می‌شود، استفاده درست از Repository Pattern می‌تواند ساختار کد را منظم‌تر، testableتر و قابل‌گسترش‌تر کند. از قدم‌های کوچک شروع شود؛ مثلاً از ماژول User یا Order و بعد سایر بخش‌ها را به این الگو مهاجرت بدهید. 🚀

🔖 #Laravel #PHP #لاراول #Laravel #Repository_Pattern #Clean_Code #Service_Container #PHP #Architecture

👤 Developix

💎 Channel: @DevelopixLaravel
اگه تا الان ابزار Git رو یادنگرفتین یا آموزش خوبی براش ندیدین،

سایت GitByBit با هدف آموزش Hands-On مشکلتون رو حل میکنه.

حتی اگه گیت هم بلدین یه نگاه به سایتش بکنین. اینقدر این سایت رو جذاب ساخته آقای الکساندر شوتس که میتونی از نگاه کردن به لندینگ پیج سایت بسیار لذت ببری :)

بماند که چند سال طول کشیده بسازتش (پروژه بزرگی هست، بخشهای بسیار زیاد و هماهنگی خیلی زیادی با ابزارهای متنوع داره) ولی یادآور بسیار خوبیه که برای خلق یک محتوای خوب، هر چقدر هم که ابزار حرفهای در اختیار داشته باشی، "زمان" همچنان مهمترین فاکتوره. البته اینم بگم که ایشون دفعه اولشون نیست چنین سایت های آموزشی برای مطالب پیچیده میسازن.

#Git
#Github
#Learn
#AlexanderShvets

GitByBit https://gitbybit.com

@crzy_dev

Resource:
https://www.linkedin.com/posts/reza-shahmoradi-3332a21aa_aexaezaeqaepaezaevabraewahy-share-7481758349378711552-UdbI
❤2