Blade PHP: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Blade PHP: دليل شامل مع أمثلة عملية

1. ما هو Blade ولماذا تستخدمه؟

Blade هو محرك قوالب (template engine) قوي وأنيق، وهو جزء أساسي من إطار العمل Laravel. يوفر Blade صياغة سهلة ومرنة للتعامل مع قوالب HTML، مما يسمح للمطورين بفصل منطق العرض عن منطق الأعمال الخاص بالتطبيق. على عكس استخدام PHP الخام، يقدم Blade تركيبات مختصرة وفعالة للحلقات التكرارية، الشروط، وراثة القوالب، وإدراج المكونات، مما يجعل الكود أكثر قابلية للقراءة والصيانة.

المهمة الأساسية لـ Blade هي تبسيط إنشاء صفحات الويب الديناميكية. يقوم Blade بترجمة القوالب إلى كود PHP عادي، ويتم تخزين هذا الكود في ذاكرة التخزين المؤقت (cache) إلى أن يتم تعديل القالب. هذا يضمن أداءً عاليًا، حيث لا يحتاج كل طلب إلى إعادة الترجمة. يتضمن Blade أيضًا حماية مدمجة ضد هجمات XSS من خلال تخطي المخرجات (وظيفة {{ }}).

Blade مثالي للمشاريع المبنية على Laravel، ولكن يمكن استخدامه أيضًا بشكل منفصل (عبر الحزمة jenssegers/blade). يدعم Blade وراثة القوالب (layout)، الأقسام (sections)، المكونات (components)، الفتحات (slots)، التوجيهات الشرطية، وغيرها الكثير. بفضل بساطته ومرونته، أصبح Blade المعيار الفعلي لمعالجة القوالب في نظام PHP البيئي.

2. طريقة التثبيت

يأتي Blade مدمجًا مع Laravel، لذلك لا يتطلب تثبيتًا إضافيًا عند استخدامه ضمن الإطار. إذا كنت ترغب في استخدام Blade بشكل منفصل (على سبيل المثال، في مشروع بدون Laravel)، قم بتثبيت الحزمة عبر Composer:

composer require jenssegers/blade

بعد التثبيت، تحتاج إلى إنشاء كائن من فئة Blade وتحديد مسارات القوالب وذاكرة التخزين المؤقت:

use Jenssegers\Blade\Blade;

$blade = new Blade('views', 'cache');
echo $blade->render('index', ['name' => 'العالم']);

حيث views هو مجلد القوالب، و cache هو مجلد الملفات المخزنة مؤقتًا.

3. البداية السريعة — مثال عملي بسيط

قم بإنشاء ملف القالب views/hello.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>مرحبًا، {{ $name }}!</title>
</head>
<body>
    <h1>أهلاً بك، {{ $name }}!</h1>
    @if (strlen($name) > 5)
        <p>لديك اسم طويل!</p>
    @else
        <p>اسم قصير وجميل.</p>
    @endif
</body>
</html>

الآن قم بإنشاء سكريبت PHP لعرض القالب:

require 'vendor/autoload.php';

use Jenssegers\Blade\Blade;

$blade = new Blade('views', 'cache');
echo $blade->render('hello', ['name' => 'أحمد']);

النتيجة: صفحة HTML تحتوي على ترحيب ورسالة شرطية.

4. أهم الدوال والوظائف

4.1. @extends — وراثة القالب

الصيغة: @extends('layout.name')

الوظيفة: تحدد أن القالب الحالي يرث قالبًا آخر (أبويًا).

مثال:

<!-- layouts/app.blade.php -->
<html>
<head>
    <title>@yield('title')</title>
</head>
<body>
    @yield('content')
</body>
</html>

<!-- pages/home.blade.php -->
@extends('layouts.app')

@section('title', 'الصفحة الرئيسية')

@section('content')
    <h1>مرحبًا بكم!</h1>
@endsection

4.2. @section و @yield — الأقسام

الصيغة: @section('name', 'default') و @yield('name', 'default')

الوظيفة: تحدد قسمًا من المحتوى سيتم إدراجه في القالب الأبوي عبر @yield.

مثال:

<!-- parent.blade.php -->
<div>
    @yield('sidebar', 'الشريط الجانبي الافتراضي')
</div>

<!-- child.blade.php -->
@extends('parent')

@section('sidebar')
    <ul>
        <li>رابط 1</li>
        <li>رابط 2</li>
    </ul>
@endsection

4.3. @if, @elseif, @else, @endif — الشروط

الوظيفة: تنفيذ كتل HTML بشكل شرطي.

مثال:

@if (count($users) > 0)
    <p>لدينا {{ count($users) }} مستخدم.</p>
@else
    <p>لا يوجد مستخدمين.</p>
@endif

4.4. @foreach, @for, @while — الحلقات التكرارية

الوظيفة: التكرار عبر المصفوفات أو تنفيذ حلقات.

مثال:

<ul>
@foreach ($items as $item)
    <li>{{ $item }}</li>
@endforeach
</ul>

4.5. @include — تضمين القوالب

الصيغة: @include('view.name', ['key' => 'value'])

الوظيفة: تضمين قالب آخر داخل القالب الحالي.

مثال:

<div>
    @include('partials.header', ['title' => 'مرحبًا'])
    <p>المحتوى الرئيسي هنا.</p>
</div>

4.6. @component و @slot — المكونات والفتحات

الوظيفة: إنشاء مكونات قابلة لإعادة الاستخدام مع فتحات لمحتوى مخصص.

مثال:

<!-- components/alert.blade.php -->
<div class="alert alert-{{ $type }}">
    {{ $slot }}
</div>

<!-- الاستخدام -->
@component('components.alert', ['type' => 'success'])
    <strong>تم بنجاح!</strong> تم حفظ البيانات.
@endcomponent

4.7. @php — تنفيذ كود PHP

الوظيفة: تنفيذ كود PHP داخل القالب.

مثال:

@php
    $date = date('Y-m-d');
    echo "التاريخ اليوم: $date";
@endphp

5. الخلاصة

Blade هو محرك قوالب متكامل وقوي يسهل عملية تطوير واجهات المستخدم في PHP. سواء كنت تستخدم Laravel أو تريد حلاً مستقلاً، فإن Blade يقدم لك أدوات مرنة وآمنة لبناء صفحات ويب ديناميكية. ابدأ بتجربة الأمثلة أعلاه، واستكشف المزيد من الميزات مثل المكونات المخصصة والتركيبات المتقدمة لتحسين سير عملك.

توصيات