مرجع laravel

دوال laravel الشاملة مع أمثلة تطبيقية — 300 دالة


الكل

300 عنصر
الاسم الوصف مثال
Route::get تعريف مسار GET في Laravel
Route::get("/home", [HomeController::class, "index"]);
Route::post تعريف مسار POST في Laravel
Route::post("/form", [FormController::class, "store"]);
Route::put تعريف مسار PUT لتحديث موارد
Route::put("/posts/{id}", [PostController::class, "update"]);
Route::patch تعريف مسار PATCH لتحديث جزئي
Route::patch("/posts/{id}", [PostController::class, "updatePartial"]);
Route::delete تعريف مسار DELETE لحذف موارد
Route::delete("/posts/{id}", [PostController::class, "destroy"]);
Route::match تعريف مسار يقبل عدة طرق (مثل GET و POST)
Route::match(["get","post"], "/contact", [ContactController::class, "handle"]);
Route::any يعالج أي HTTP method
Route::any("/hook", [WebhookController::class, "handle"]);
Route::resource إنشاء مجموعة مسارات قياسية (index, show, create, store, ...)
Route::resource("/posts", PostController::class);
Route::apiResource مثل resource لكن بدون مسارات العرض (create/edit) — مناسب للـ API
Route::apiResource("/photos", PhotoController::class);
Route::group تجميع مسارات مع إعدادات مشتركة مثل middleware أو prefix
Route::group(["middleware" => ["auth"]], function () { Route::get("/dashboard", [DashboardController::class, "index"]); });
Route::middleware تطبيق Middleware على مجموعة مسارات
Route::middleware(["auth"])->group(function () { Route::get("/dashboard", [DashboardController::class, "index"]); });
Route::prefix إضافة بادئة لمسارات مجموعة (مثلاً /admin)
Route::prefix("/admin")->group(function () { Route::get("/users", [AdminUserController::class, "index"]); });
Route::name إعطاء بادئة للأسماء لتسهيل التسمية والوصول إلى المسارات
Route::name("admin.")->group(function () { Route::get("/users", [AdminUserController::class, "index"])->name("users.index"); });
Route::view تعريف مسار يعرض view مباشرة دون الحاجة إلى Controller
Route::view("/welcome", "welcome");
Route::redirect إعادة توجيه مسار إلى مسار آخر
Route::redirect("/here", "/there");
Route::fallback مسار افتراضي يُستخدم إذا لم يطابق أي مسار آخر
Route::fallback(function () { return response()->view("errors.404", [], 404); });
Route::where تحديد قيود على متغيرات المسار (Regular Expression)
Route::get("/user/{id}", [UserController::class, "show"])->where("id", "[0-9]+");
Controller الكونترولر ينظم منطق التطبيق ويفصل بين منطق الأعمال (Business Logic) والواجهات.
php artisan make:controller UserController
Resource Controller كونترولر يحتوي على دوال CRUD (index, create, store, show, edit, update, destroy).
php artisan make:controller PostController --resource
Invokable Controller كونترولر يحتوي على دالة واحدة __invoke يمكن استدعاؤها مباشرة.
php artisan make:controller ShowProfile --invokable
__invoke دالة خاصة تُنفذ عند استدعاء الكونترولر كـ Callable.
public function __invoke($id) { return "User ".$id; }
Dependency Injection إدخال الكائنات مباشرة في دوال الكونترولر بدلاً من إنشائها يدوياً.
public function store(Request $request, UserService $service) { $service->create($request->all()); }
Route::controller تجميع المسارات التي تعتمد على نفس الكونترولر.
Route::controller(UserController::class)->group(function () { Route::get("/users", "index"); Route::post("/users", "store"); });
API Resource Controller إنشاء كونترولر جاهز للتعامل مع REST API.
php artisan make:controller Api/PostController --api
Single Action Controller كونترولر بعملية واحدة فقط (باستخدام __invoke).
Route::get("/profile/{id}", ShowProfile::class);
Nested Controllers تعريف كونترولر لمعالجة علاقات داخلية (مثل user.posts).
Route::resource("users.posts", PostController::class);
Controller Middleware إضافة Middleware مباشرة في الكونترولر.
public function __construct() { $this->middleware("auth"); }
Model يمثل الجدول في قاعدة البيانات ويتعامل مع البيانات باستخدام Eloquent ORM.
php artisan make:model Product
Fillable مصفوفة تحدد الحقول القابلة للإدخال بشكل جماعي (Mass Assignment).
protected $fillable = ["name", "price", "description"];
Guarded مصفوفة تحدد الحقول غير القابلة للإدخال.
protected $guarded = ["id"];
Timestamps يضيف تلقائياً created_at و updated_at للجداول.
public $timestamps = true;
Hidden إخفاء أعمدة معينة عند تحويل الموديل إلى JSON.
protected $hidden = ["password"];
Casts تحويل نوع البيانات تلقائياً عند القراءة والكتابة.
protected $casts = ["is_active" => "boolean", "created_at" => "datetime"];
Relationships: One To One علاقة واحد لواحد بين جدولين.
public function phone() { return $this->hasOne(Phone::class); }
Relationships: One To Many علاقة واحد لمتعدد.
public function posts() { return $this->hasMany(Post::class); }
Relationships: Many To One الجانب العكسي لعلاقة واحد لمتعدد.
public function user() { return $this->belongsTo(User::class); }
Relationships: Many To Many علاقة متعدد لمتعدد.
public function roles() { return $this->belongsToMany(Role::class); }
Pivot Table جدول وسيط يستخدم في العلاقات Many To Many.
user_role (user_id, role_id)
Relationships: Has Many Through الوصول إلى بيانات عبر علاقة وسيطة.
public function posts() { return $this->hasManyThrough(Post::class, User::class); }
Accessor تعديل القيم عند القراءة.
public function getNameAttribute($value) { return ucfirst($value); }
Mutator تعديل القيم قبل الحفظ.
public function setPasswordAttribute($value) { $this->attributes["password"] = bcrypt($value); }
Local Scope فلترة الاستعلامات المتكررة.
public function scopeActive($query) { return $query->where("active", 1); }
Global Scope فلترة يتم تطبيقها على كل الاستعلامات.
protected static function booted() { static::addGlobalScope("active", fn($query) => $query->where("active", 1)); }
Soft Deletes حذف منطقي (يضيف deleted_at بدلاً من حذف فعلي).
use Illuminate\Database\Eloquent\SoftDeletes;
Events (creating, updating, deleting) إطلاق أحداث عند التعامل مع الموديل.
protected static function booted() { static::creating(function($model) { Log::info("Creating new record"); }); }
Migration ملف مسؤول عن إنشاء/تعديل الجداول في قاعدة البيانات.
php artisan make:migration create_users_table
php artisan migrate تنفيذ جميع ملفات المايغريشن المعلقة.
php artisan migrate
php artisan migrate:rollback التراجع عن آخر دفعة من المايغريشن.
php artisan migrate:rollback
php artisan migrate:refresh إعادة تشغيل جميع المايغريشن (إلغاء ثم إعادة).
php artisan migrate:refresh
php artisan migrate:fresh حذف جميع الجداول ثم تشغيل المايغريشن من جديد.
php artisan migrate:fresh
Schema::create إنشاء جدول جديد.
Schema::create("users", function (Blueprint $table) { $table->id(); $table->string("name"); $table->timestamps(); });
Schema::table تعديل جدول موجود.
Schema::table("users", function (Blueprint $table) { $table->string("email")->unique(); });
Schema::drop حذف جدول.
Schema::drop("users");
Schema::dropIfExists حذف جدول إذا كان موجوداً.
Schema::dropIfExists("users");
$table->id() إضافة عمود id تلقائي متزايد.
$table->id();
$table->bigIncrements() مفتاح أساسي نوع BIGINT Auto Increment.
$table->bigIncrements("id");
$table->string() عمود نصي (VARCHAR).
$table->string("name", 100);
$table->text() عمود نص طويل.
$table->text("description");
$table->integer() عمود عدد صحيح.
$table->integer("age");
$table->boolean() عمود منطقي (true/false).
$table->boolean("is_active");
$table->timestamps() إضافة created_at و updated_at تلقائياً.
$table->timestamps();
$table->softDeletes() إضافة عمود deleted_at للحذف المنطقي.
$table->softDeletes();
$table->foreignId()->constrained() إضافة مفتاح أجنبي مرتبط بجدول آخر.
$table->foreignId("user_id")->constrained();
$table->unique() إضافة قيد فريد.
$table->string("email")->unique();
$table->index() إضافة فهرس للعمود.
$table->index("status");
Blade محرك القوالب المدمج مع Laravel لتوليد واجهات ديناميكية.
resources/views/welcome.blade.php
{{ $variable }} عرض متغير مع الحماية من XSS.
<h1>{{ $user->name }}</h1>
{!! $variable !!} عرض متغير بدون الحماية (عرض HTML مباشرة).
{!! $post->content !!}
@if / @elseif / @else / @endif شروط منطقية داخل القالب.
@if($user->isAdmin) <p>أنت مدير</p> @else <p>مستخدم عادي</p> @endif
@unless عكس if (يعمل إذا كانت القيمة false).
@unless($user->isAdmin) <p>لا تملك صلاحيات المدير</p> @endunless
@isset / @endisset التحقق إذا كان المتغير معرف.
@isset($records) <p>عدد: {{ count($records) }}</p> @endisset
@empty / @endempty التحقق إذا كان المتغير فارغ.
@empty($records) <p>لا توجد سجلات</p> @endempty
@for / @endfor حلقة for.
@for($i=0; $i<10; $i++) <p>{{ $i }}</p> @endfor
@foreach / @endforeach حلقة foreach.
@foreach($users as $user) <li>{{ $user->name }}</li> @endforeach
@forelse / @empty / @endforelse حلقة foreach مع شرط إذا كان فارغ.
@forelse($users as $user) <li>{{ $user->name }}</li> @empty <p>لا يوجد مستخدمين</p> @endforelse
@while / @endwhile حلقة while.
@while($i < 10) <p>{{ $i++ }}</p> @endwhile
@switch / @case / @break / @endswitch شروط متعددة مثل switch.
@switch($role) @case("admin") لوحة المدير @break @case("user") صفحة المستخدم @break @default ضيف @endswitch
@include إدراج ملف Blade آخر.
@include("partials.header")
@extends توريث من قالب رئيسي.
@extends("layouts.app")
@section / @endsection تحديد جزء محتوى يتم حقنه في القالب الرئيسي.
@section("content") <h1>الرئيسية</h1> @endsection
@yield مكان يتم حقن المحتوى فيه من القوالب الفرعية.
<body>@yield("content")</body>
@csrf إضافة توكن CSRF تلقائياً داخل الفورم.
<form method="POST">@csrf</form>
@method إضافة Method HTTP (PUT, PATCH, DELETE) داخل الفورم.
<form method="POST">@method("PUT")</form>
@error عرض رسالة خطأ تحقق على حقل معين.
@error("email") <span class="text-danger">{{ $message }}</span> @enderror
@auth / @endauth عرض محتوى فقط إذا كان المستخدم مسجلاً دخول.
@auth <p>مرحباً {{ auth()->user()->name }}</p> @endauth
@guest / @endguest عرض محتوى إذا كان المستخدم ضيف (غير مسجل دخول).
@guest <a href="/login">تسجيل الدخول</a> @endguest
@stack / @push تجميع سكربتات أو محتوى من أماكن مختلفة داخل قالب.
@push("scripts") <script src="app.js"></script> @endpush ... @stack("scripts")
all() جلب جميع السجلات من الجدول.
$users = User::all();
find() جلب سجل حسب الـ id.
$user = User::find(1);
findOrFail() جلب سجل بالـ id أو إرجاع 404 إذا لم يوجد.
$user = User::findOrFail($id);
first() جلب أول سجل يطابق الشرط.
$user = User::where("email", "[email protected]")->first();
firstOrFail() جلب أول سجل أو إرجاع 404.
$user = User::where("active", 1)->firstOrFail();
pluck() جلب عمود محدد من السجلات.
$emails = User::pluck("email");
select() تحديد أعمدة معينة من الجدول.
$users = User::select("id", "name")->get();
where() تصفية النتائج بشرط.
$activeUsers = User::where("active", 1)->get();
orWhere() إضافة شرط OR.
$users = User::where("active", 1)->orWhere("role", "admin")->get();
whereBetween() فلترة بين قيمتين.
$users = User::whereBetween("age", [18, 30])->get();
whereIn() فلترة حسب قائمة قيم.
$users = User::whereIn("id", [1,2,3])->get();
orderBy() ترتيب النتائج.
$users = User::orderBy("name", "asc")->get();
latest() ترتيب حسب الأحدث (عادةً created_at).
$users = User::latest()->get();
oldest() ترتيب حسب الأقدم.
$users = User::oldest()->get();
count() إرجاع عدد السجلات.
$count = User::count();
sum() إرجاع مجموع قيمة عمود.
$total = Order::sum("price");
avg() إرجاع المتوسط.
$average = Order::avg("price");
max() إرجاع أكبر قيمة.
$highest = Order::max("price");
min() إرجاع أصغر قيمة.
$lowest = Order::min("price");
with() تحميل العلاقات مع الموديل (Eager Loading).
$users = User::with("posts")->get();
load() تحميل علاقة لموديل تم جلبه مسبقاً.
$user->load("posts");
create() إضافة سجل جديد (باستخدام Mass Assignment).
User::create(["name" => "Ali", "email" => "[email protected]"]);
update() تحديث بيانات السجل.
$user->update(["name" => "Ahmed"]);
delete() حذف سجل.
$user->delete();
destroy() حذف سجل أو أكثر باستخدام id.
User::destroy([1,2,3]);
save() حفظ موديل جديد أو تحديث موديل موجود.
$user = new User; $user->name = "Sara"; $user->save();
paginate() تقسيم النتائج إلى صفحات.
$users = User::paginate(10);
simplePaginate() تقسيم نتائج بطريقة أبسط.
$users = User::simplePaginate(15);
Middleware طبقة وسيطة تعالج الطلبات قبل/بعد وصولها للكونترولر.
php artisan make:middleware CheckAge
$this->middleware() إضافة ميدل وير على كونترولر كامل أو على دوال محددة.
public function __construct() { $this->middleware("auth")->only("index"); }
Register Middleware تسجيل Middleware في app/Http/Kernel.php.
protected $routeMiddleware = ["auth" => \App\Http\Middleware\Authenticate::class];
Global Middleware ميدل وير يتم تشغيله على كل الطلبات.
app/Http/Kernel.php → $middleware array
Route Middleware ميدل وير يطبق فقط على مسارات معينة.
Route::get("/profile", [UserController::class, "index"])->middleware("auth");
Group Middleware تجميع عدة ميدل وير في مجموعة.
Route::middleware(["auth", "verified"])->group(function () { Route::get("/dashboard", DashboardController::class); });
Terminating Middleware ميدل وير يعمل بعد إرسال الاستجابة.
public function terminate($request, $response) { Log::info("تم إنهاء الطلب"); }
Parameters Middleware تمرير باراميتر إلى الميدل وير من المسار.
Route::get("/posts", PostController::class)->middleware("role:admin");
Redirect in Middleware إعادة التوجيه إذا لم يتحقق شرط معين.
if ($request->age < 18) { return redirect("home"); }
Next Middleware استدعاء الميدل وير التالي في السلسلة.
public function handle($request, Closure $next) { return $next($request); }
Custom Auth Middleware إنشاء ميدل وير مخصص لفحص صلاحيات معينة.
if (! $request->user()->isAdmin()) { abort(403); } return $next($request);
Form Request كلاس مخصص للتحقق من المدخلات بدلاً من وضع القواعد داخل الكونترولر.
php artisan make:request StoreUserRequest
$request->all() جلب جميع البيانات المرسلة بالطلب.
public function store(Request $request) { dd($request->all()); }
$request->input() جلب قيمة مدخل معين.
$name = $request->input("name");
$request->only() جلب بعض الحقول فقط.
$data = $request->only(["name", "email"]);
$request->except() جلب جميع الحقول باستثناء بعض الحقول.
$data = $request->except(["password"]);
$request->has() التحقق إذا كان الحقل موجود في الطلب.
if ($request->has("email")) { ... }
$request->filled() التحقق إذا كان الحقل موجود وله قيمة.
if ($request->filled("name")) { ... }
$request->boolean() جلب قيمة منطقية من الطلب.
$active = $request->boolean("is_active");
$request->validate() التحقق من صحة المدخلات مباشرة داخل الكونترولر.
$validated = $request->validate(["title" => "required|max:255"]);
Validator::make() استخدام الكائن Validator للتحقق من المدخلات يدوياً.
$validator = Validator::make($request->all(), ["email" => "required|email"]);
Validation Rules: required الحقل مطلوب.
"name" => "required"
Validation Rules: email الحقل يجب أن يكون بريد إلكتروني صحيح.
"email" => "required|email"
Validation Rules: max/min تحديد الحد الأقصى أو الأدنى.
"title" => "required|max:255"
Validation Rules: unique القيمة يجب أن تكون فريدة في الجدول.
"email" => "required|unique:users,email"
Validation Rules: confirmed التحقق من وجود حقل مطابق (مثل password_confirmation).
"password" => "required|confirmed"
Validation Rules: regex استخدام تعبير منتظم للتحقق.
"phone" => "required|regex:/^[0-9]{10}$/"
Custom Messages تخصيص رسائل الأخطاء.
$request->validate(["email" => "required|email"], ["email.required" => "البريد مطلوب"]);
Form Request authorize() تحديد الصلاحية لتنفيذ الطلب.
public function authorize() { return auth()->user()->isAdmin(); }
Form Request rules() تحديد قواعد التحقق في كلاس FormRequest.
public function rules() { return ["name" => "required", "email" => "email"]; }
@error in Blade عرض رسالة خطأ مرتبطة بحقل.
@error("email") <span class="text-danger">{{ $message }}</span> @enderror
Auth::attempt() محاولة تسجيل الدخول باستخدام بيانات الاعتماد.
if (Auth::attempt(["email" => $email, "password" => $password])) { return redirect()->intended("dashboard"); }
Auth::check() التحقق إذا كان المستخدم مسجل دخول.
if (Auth::check()) { echo Auth::user()->name; }
Auth::user() جلب المستخدم الحالي المسجل دخول.
$user = Auth::user();
Auth::id() جلب id للمستخدم الحالي.
$id = Auth::id();
Auth::logout() تسجيل خروج المستخدم.
Auth::logout();
Hash::make() تشفير كلمة المرور قبل التخزين.
$user->password = Hash::make("secret");
Hash::check() التحقق من كلمة المرور.
if (Hash::check("plain-password", $user->password)) { ... }
Middleware: auth منع الوصول إلا للمستخدمين المسجلين دخول.
Route::get("/dashboard", DashboardController::class)->middleware("auth");
Middleware: guest السماح فقط للضيوف (غير المسجلين).
Route::get("/login", AuthController::class)->middleware("guest");
Password Reset نظام استعادة كلمة المرور.
php artisan make:auth (أو Jetstream/Fortify لإدارته)
Authorization Gates تحديد صلاحيات معينة باستخدام Gate.
Gate::define("update-post", function ($user, $post) { return $user->id === $post->user_id; });
Gate::allows() التحقق من صلاحية Gate.
if (Gate::allows("update-post", $post)) { ... }
Gate::denies() التحقق من عدم امتلاك الصلاحية.
if (Gate::denies("delete-post", $post)) { abort(403); }
Policies كلاسات مخصصة لإدارة الصلاحيات على موديل.
php artisan make:policy PostPolicy --model=Post
Policy method دوال داخل Policy تحدد الصلاحيات.
public function update(User $user, Post $post) { return $user->id === $post->user_id; }
$this->authorize() التحقق من الصلاحيات داخل الكونترولر.
$this->authorize("update", $post);
@can in Blade عرض جزء من القالب إذا كان يملك صلاحية.
@can("update", $post) <button>تعديل</button> @endcan
@cannot in Blade عرض جزء إذا لم يملك الصلاحية.
@cannot("delete", $post) <p>لا يمكنك الحذف</p> @endcannot
@auth in Blade عرض محتوى فقط للمستخدمين المسجلين.
@auth <p>مرحباً {{ auth()->user()->name }}</p> @endauth
@guest in Blade عرض محتوى للضيوف فقط.
@guest <a href="/login">تسجيل الدخول</a> @endguest
php artisan list عرض جميع أوامر Artisan المتاحة.
php artisan list
php artisan help عرض شرح لأمر معين.
php artisan help migrate
php artisan tinker فتح واجهة تفاعلية للتعامل مع التطبيق.
php artisan tinker
php artisan make:controller إنشاء Controller جديد.
php artisan make:controller UserController
php artisan make:model إنشاء Model جديد.
php artisan make:model Product
php artisan make:migration إنشاء ملف Migration جديد.
php artisan make:migration create_orders_table
php artisan make:seeder إنشاء Seeder لإضافة بيانات تجريبية.
php artisan make:seeder UsersTableSeeder
php artisan make:factory إنشاء Factory لتوليد بيانات وهمية.
php artisan make:factory UserFactory
php artisan make:middleware إنشاء Middleware جديد.
php artisan make:middleware CheckAge
php artisan make:request إنشاء Form Request للتحقق من المدخلات.
php artisan make:request StoreUserRequest
php artisan make:policy إنشاء Policy لإدارة الصلاحيات.
php artisan make:policy PostPolicy --model=Post
php artisan make:job إنشاء Job لمعالجة المهام في الخلفية.
php artisan make:job SendEmailJob
php artisan make:event إنشاء Event جديد.
php artisan make:event UserRegistered
php artisan make:listener إنشاء Listener للتعامل مع Event.
php artisan make:listener SendWelcomeEmail --event=UserRegistered
php artisan route:list عرض جميع المسارات المسجلة.
php artisan route:list
php artisan migrate تشغيل جميع المايغريشن.
php artisan migrate
php artisan migrate:rollback التراجع عن آخر دفعة من المايغريشن.
php artisan migrate:rollback
php artisan migrate:fresh حذف جميع الجداول وإعادة تشغيل المايغريشن.
php artisan migrate:fresh
php artisan db:seed تشغيل الـ Seeders لإضافة بيانات.
php artisan db:seed
php artisan storage:link إنشاء رابط رمزي لمجلد التخزين.
php artisan storage:link
php artisan cache:clear مسح الكاش الخاص بالتطبيق.
php artisan cache:clear
php artisan config:clear مسح كاش الإعدادات.
php artisan config:clear
php artisan route:clear مسح كاش المسارات.
php artisan route:clear
php artisan view:clear مسح كاش القوالب.
php artisan view:clear
php artisan serve تشغيل خادم محلي للتطبيق.
php artisan serve
Seeder ملف مسؤول عن إدخال بيانات تجريبية لقاعدة البيانات.
php artisan make:seeder UsersTableSeeder
run() in Seeder دالة داخل Seeder تحدد البيانات المراد إدخالها.
public function run() { User::factory()->count(10)->create(); }
php artisan db:seed تشغيل جميع الـ Seeders المسجلة في DatabaseSeeder.
php artisan db:seed
php artisan db:seed --class تشغيل Seeder معين.
php artisan db:seed --class=UsersTableSeeder
php artisan migrate:fresh --seed إعادة إنشاء الجداول وتشغيل Seeder مباشرة.
php artisan migrate:fresh --seed
Factory كلاس لتوليد بيانات وهمية باستخدام مكتبة Faker.
php artisan make:factory UserFactory
definition() in Factory تعريف الحقول والبيانات الوهمية داخل Factory.
public function definition() { return [ "name" => $this->faker->name(), "email" => $this->faker->unique()->safeEmail(), ]; }
Using Factory with create() إنشاء سجل وهمي وحفظه في قاعدة البيانات.
User::factory()->create();
Using Factory with make() إنشاء سجل وهمي دون حفظه.
$user = User::factory()->make();
Factory count() إنشاء عدد معين من السجلات.
User::factory()->count(50)->create();
Factory states() إنشاء حالات مختلفة من البيانات.
User::factory()->state(["is_admin" => true])->create();
Has Factory Trait يُضاف للموديل لاستخدام الـ Factory.
use HasFactory;
Calling Factory from Seeder تشغيل Factory داخل Seeder.
User::factory()->count(100)->create();
Faker مكتبة لتوليد بيانات وهمية مثل الأسماء والعناوين.
$this->faker->address
faker->name() توليد اسم وهمي.
$this->faker->name()
faker->email() توليد بريد إلكتروني وهمي.
$this->faker->unique()->safeEmail()
faker->phoneNumber() توليد رقم هاتف وهمي.
$this->faker->phoneNumber()
faker->address() توليد عنوان وهمي.
$this->faker->address
faker->text() توليد نص قصير.
$this->faker->text(100)
php artisan make:event إنشاء Event جديد.
php artisan make:event UserRegistered
php artisan make:listener إنشاء Listener لمعالجة حدث.
php artisan make:listener SendWelcomeEmail --event=UserRegistered
Event class الكلاس الذي يمثل الحدث ويحتوي البيانات المرتبطة.
class UserRegistered { public $user; public function __construct(User $user) { $this->user = $user; } }
Listener class كلاس يتعامل مع الحدث عند وقوعه.
class SendWelcomeEmail { public function handle(UserRegistered $event) { Mail::to($event->user->email)->send(new WelcomeMail()); } }
EventServiceProvider مكان تسجيل الأحداث والمستمعين.
protected $listen = [ UserRegistered::class => [SendWelcomeEmail::class], ];
event() helper تشغيل حدث معين.
event(new UserRegistered($user));
Event::dispatch() تشغيل حدث باستخدام الـ dispatch.
UserRegistered::dispatch($user);
Queued Listeners تشغيل المستمع في الخلفية باستخدام Queue.
class SendWelcomeEmail implements ShouldQueue { ... }
ShouldQueue تنفيذ Listener عبر نظام الطوابير.
class SendWelcomeEmail implements ShouldQueue
php artisan event:generate توليد جميع الأحداث والمستمعين غير المنشأة.
php artisan event:generate
Broadcasting Events بث الأحداث عبر WebSockets.
class OrderShipped implements ShouldBroadcast { ... }
ShouldBroadcast إرسال الحدث للـ frontend عبر قنوات البث.
class OrderShipped implements ShouldBroadcast
Broadcast::channel() تعريف القنوات الخاصة بالبث.
Broadcast::channel("orders.{orderId}", function ($user, $orderId) { return $user->id === Order::find($orderId)->user_id; });
listen() in EventServiceProvider إضافة أحداث يدوياً داخل EventServiceProvider.
protected $listen = [ Registered::class => [SendEmailVerificationNotification::class], ];
php artisan make:job إنشاء Job جديد.
php artisan make:job SendEmailJob
Job class كلاس يحتوي على المهمة المراد تنفيذها.
class SendEmailJob implements ShouldQueue { public function handle() { Mail::to("[email protected]")->send(new WelcomeMail()); } }
dispatch() إرسال Job إلى الطابور.
SendEmailJob::dispatch($user);
dispatchSync() تشغيل Job بشكل متزامن (مباشر).
SendEmailJob::dispatchSync($user);
onQueue() تحديد الطابور الذي يذهب له الـ Job.
SendEmailJob::dispatch()->onQueue("emails");
delay() تأخير تنفيذ Job لفترة زمنية.
SendEmailJob::dispatch()->delay(now()->addMinutes(5));
ShouldQueue تنفيذ Job عبر الطوابير بدلاً من التنفيذ المباشر.
class SendEmailJob implements ShouldQueue
php artisan queue:table إنشاء جدول لإدارة الطوابير في قاعدة البيانات.
php artisan queue:table && php artisan migrate
php artisan queue:work تشغيل العامل لمعالجة المهام.
php artisan queue:work
php artisan queue:listen تشغيل العامل مع الاستماع المستمر للطوابير.
php artisan queue:listen
php artisan queue:failed-table إنشاء جدول للأعمال الفاشلة.
php artisan queue:failed-table && php artisan migrate
failed() method التعامل مع فشل تنفيذ الـ Job.
public function failed(Exception $e) { Log::error($e->getMessage()); }
retry إعادة محاولة تنفيذ Job فشل سابقاً.
php artisan queue:retry 5
forget إزالة Job فاشل من السجل.
php artisan queue:forget 5
flush حذف جميع المهام الفاشلة.
php artisan queue:flush
Bus::batch() تشغيل عدة Jobs كدفعة واحدة.
$batch = Bus::batch([ new ImportUsers, new ImportOrders ])->dispatch();
Horizon أداة لإدارة ومراقبة الطوابير بشكل مرئي.
composer require laravel/horizon
Supervisor برنامج خارجي لإبقاء queue:work يعمل في الخلفية.
supervisorctl start laravel-worker:*
php artisan make:notification إنشاء إشعار جديد.
php artisan make:notification InvoicePaid
Notification class كلاس الإشعار يحتوي القنوات ومحتوى الرسالة.
class InvoicePaid extends Notification { public function via($notifiable) { return ["mail"]; } }
via() method تحديد القنوات التي يرسل عبرها الإشعار.
public function via($notifiable) { return ["mail", "database"]; }
toMail() إرسال الإشعار عبر البريد الإلكتروني.
public function toMail($notifiable) { return (new MailMessage)->line("تم دفع الفاتورة."); }
toDatabase() تخزين الإشعار في قاعدة البيانات.
public function toDatabase($notifiable) { return ["amount" => $this->amount]; }
toBroadcast() بث الإشعار عبر WebSockets.
public function toBroadcast($notifiable) { return new BroadcastMessage(["amount" => $this->amount]); }
toSlack() إرسال الإشعار إلى Slack.
public function toSlack($notifiable) { return (new SlackMessage)->content("فاتورة جديدة!"); }
toVonage() إرسال الإشعار عبر SMS.
public function toVonage($notifiable) { return (new VonageMessage)->content("تم دفع الفاتورة."); }
notify() إرسال إشعار لمستخدم.
$user->notify(new InvoicePaid($invoice));
Notification::send() إرسال إشعار لمجموعة من المستخدمين.
Notification::send($users, new InvoicePaid($invoice));
Notifiable trait يضاف إلى موديل User ليتمكن من استقبال الإشعارات.
use Notifiable;
notifications table جدول لتخزين الإشعارات في قاعدة البيانات.
php artisan notifications:table && php artisan migrate
unreadNotifications جلب الإشعارات غير المقروءة.
$user->unreadNotifications
readNotifications جلب الإشعارات المقروءة.
$user->readNotifications
markAsRead() تحديد الإشعار كمقروء.
$user->unreadNotifications->markAsRead();
delete notification حذف إشعار من قاعدة البيانات.
$user->notifications()->delete();
MailMessage كائن لإنشاء رسالة بريد بتنسيق سهل.
return (new MailMessage)->subject("فاتورة جديدة")->line("تم الدفع بنجاح.");
SlackMessage كائن لإرسال رسالة إلى Slack.
return (new SlackMessage)->content("تنبيه جديد!");
BroadcastMessage كائن لإرسال إشعار عبر البث المباشر.
return new BroadcastMessage(["order_id" => $this->order->id]);
php artisan make:mail إنشاء كلاس Mail جديد.
php artisan make:mail WelcomeMail
Mailable class كلاس البريد يحتوي الرسالة والتفاصيل.
class WelcomeMail extends Mailable { public function build() { return $this->view("emails.welcome"); } }
build() method تحديد القالب أو المحتوى المرسل.
public function build() { return $this->subject("مرحبا بك")->view("emails.welcome"); }
Mail::to() تحديد المستلم للبريد.
Mail::to("[email protected]")->send(new WelcomeMail());
cc() / bcc() إضافة نسخة كربونية أو مخفية.
Mail::to("[email protected]")->cc("[email protected]")->bcc("[email protected]")->send(new WelcomeMail());
Mail::queue() إرسال البريد عبر الطابور.
Mail::to($user)->queue(new WelcomeMail());
Mail::later() إرسال البريد بعد فترة زمنية.
Mail::to($user)->later(now()->addMinutes(10), new WelcomeMail());
attachments إرفاق ملفات مع البريد.
return $this->view("emails.invoice")->attach("/path/invoice.pdf");
with() تمرير بيانات إلى القالب.
return $this->view("emails.welcome")->with(["name" => $this->user->name]);
Markdown mail إرسال بريد باستخدام قوالب Markdown.
php artisan make:mail WelcomeMail --markdown=emails.welcome
markdown() عرض البريد باستخدام Markdown.
return $this->markdown("emails.welcome");
config/mail.php ملف إعدادات البريد (SMTP, Mailgun...).
MAIL_MAILER=smtp, MAIL_HOST=smtp.mailtrap.io
Mail Facade الواجهة الأساسية لإرسال البريد.
use Illuminate\Support\Facades\Mail;
php artisan make:notification --mail يمكن إرسال البريد أيضاً عبر نظام Notifications.
php artisan make:notification UserRegistered
Storage facade الواجهة الرئيسية للتعامل مع الملفات.
use Illuminate\Support\Facades\Storage;
php artisan storage:link إنشاء رابط رمزي لمجلد التخزين للوصول من المتصفح.
php artisan storage:link
Storage::put() رفع أو إنشاء ملف.
Storage::put("file.txt", "Hello World");
Storage::get() قراءة محتوى ملف.
$content = Storage::get("file.txt");
Storage::exists() التحقق إذا كان الملف موجود.
if (Storage::exists("file.txt")) { ... }
Storage::delete() حذف ملف.
Storage::delete("file.txt");
Storage::copy() نسخ ملف.
Storage::copy("old.txt", "new.txt");
Storage::move() نقل ملف.
Storage::move("old.txt", "archive/old.txt");
Storage::download() تحميل ملف كاستجابة للمتصفح.
return Storage::download("file.txt");
Storage::url() جلب رابط عام للملف.
$url = Storage::url("avatars/user1.png");
Storage::disk() التعامل مع نظام تخزين محدد (local, s3, public).
Storage::disk("s3")->put("file.txt", "Hello");
config/filesystems.php ملف إعدادات أنظمة التخزين (local, public, s3...).
"default" => env("FILESYSTEM_DISK", "local"),
Request::file() جلب ملف مرفوع من الفورم.
$file = $request->file("avatar");
$file->store() رفع الملف لمجلد معين.
$path = $request->file("avatar")->store("avatars");
$file->storeAs() رفع الملف باسم مخصص.
$request->file("avatar")->storeAs("avatars", "user1.png");
$file->getClientOriginalName() جلب الاسم الأصلي للملف المرفوع.
$name = $file->getClientOriginalName();
$file->getClientMimeType() جلب نوع الملف.
$type = $file->getClientMimeType();
File facade التعامل مع الملفات مباشرة عبر File بدلاً من Storage.
use Illuminate\Support\Facades\File;
File::files() جلب جميع الملفات من مجلد.
$files = File::files(storage_path("app/avatars"));
File::allFiles() جلب الملفات بشكل متداخل (بما في ذلك المجلدات الفرعية).
$all = File::allFiles(storage_path("app"));
Cache facade الواجهة الأساسية للتعامل مع الكاش.
use Illuminate\Support\Facades\Cache;
Cache::put() تخزين قيمة في الكاش مع وقت انتهاء.
Cache::put("key", "value", 3600);
Cache::get() جلب قيمة من الكاش.
$value = Cache::get("key");
Cache::get() with default جلب قيمة أو قيمة افتراضية إذا لم توجد.
$value = Cache::get("key", "default");
Cache::has() التحقق من وجود قيمة في الكاش.
if (Cache::has("key")) { ... }