في هذا الدرس 6تصفّح المواضيع
يُعد Blade محرك القوالب الرسمي في Laravel، حيث يترجم ملفات الواجهات إلى كود PHP قياسي ويحفظ النسخ المترجمة مؤقتاً داخل مجلد storage/framework/views. وبما أن المحرك لا يعيد الترجمة إلا عند تعديل الملف الأصلي، فإنه لا يسبب أي بطء في سرعة التنفيذ.
- ترجمة عالية الأداء (PHP Compilation): تتحول قوالب Blade إلى ملفات PHP صريحة تُنفذ بأقصى سرعة.
- تحديث تلقائي للكاش (Timestamp Check): يقارن المحرك تاريخ تعديل القالب ويعيد ترجمته تلقائياً عند التغيير.
- أوامر إدارة الكاش (view:cache / clear): تتيح لك ترجمة كافة القوالب مسبقاً للإنتاج أو مسحها عند الحاجة.
# Precompile all Blade templates for production
php artisan view:cache
# Clear compiled view files from storage/framework/views
php artisan view:clear
تُعد الأقواس المعقوفة المزدوجة {{ $variable }} الصيغة الأساسية في Blade لطباعة قيم المتغيرات أو خصائص الكائنات أو مخرجات الدوال داخل الصفحة. تمر جميع القيم المطبوعة بهذه الصيغة تلقائياً عبر دالة التعقيم لمنع هجمات حقن السكربتات الخبيثة XSS.
- حماية تلقائية من الاختراق (XSS Escaping): تحول الرموز الخطرة مثل أقواس الوسوم إلى كيانات HTML نصية آمنة.
- دعم التعبيرات البرمجية (PHP Expressions): يمكنك طباعة نتائج الدوال والعمليات الحسابية مباشرة داخل الأقواس.
- القيمة الافتراضية الآمنة (Null Coalescing): استخدم معامل الاستبدال ?? لعرض نص بديل عند غياب القيمة.
<div class="profile-card">
<h2>{{ $userName }}</h2>
<p>Role: {{ $userRole ?? 'Member' }}</p>
<span>Joined: {{ date('Y-m-d') }}</span>
</div>
في الحالات النادرة التي تحتاج فيها لعرض كود HTML موثوق ومعقم مسبقاً من نظامك، يوفر محرك Blade صيغة الطباعة الخام {!! $html !!}. يُحظر تماماً استخدام هذه الصيغة مع أي مدخلات يكتبها المستخدم لأن أي وسم سكربت خبيث سيعمل فوراً في متصفحات الزوار.
- طباعة خام دون تعقيم (Unescaped Output): تطبع النص كما هو تماماً وتفسره الصفحة كوسوم HTML حقيقية.
- خطر أمني جسيم (XSS Vulnerability): تمرير تعليقات الزوار أو مدخلاتهم داخل {!! !!} يؤدي لاختراق المتصفح فوراً.
- التعقيم المسبق إلزامي (Sanitize First): قصر استخدامها على النصوص المولدة برمجياً أو المنظفة بمكتبة تعقيم صارمة.
{{-- SAFE: Escapes <script> tags in user input --}}
<p class="comment">{{ $untrustedUserComment }}</p>
{{-- CAUTION: Trusted system-generated HTML only --}}
<div class="badge-icon">{!! $trustedSvgIcon !!}</div>
بخلاف تعليقات HTML العادية التي تُرسل للمتصفح ويمكن لأي زائر قراءتها في سورس الصفحة، تُحذف تعليقات Blade المحاطة بالرموز {{-- --}} تماماً أثناء الترجمة. استخدم تعليقات Blade لتوثيق الملاحظات الهندسية الداخلية أو تعطيل جزء من الكود مؤقتاً بأمان.
- حذف كامل في الخادم (Server-Side Only): يزيل المترجم تعليقات Blade نهائياً قبل توليد صفحة الاستجابة.
- حماية الملاحظات الداخلية (Zero Client Leak): لا تظهر ملاحظات المبرمجين أبداً عند فحص كود مصدر الصفحة في المتصفح.
- دعم الأسطر المتعددة (Multi-Line Block): يمكن للتعليق الواحد أن يمتد لعدة أسطر لتعطيل أجزاء برمجية مؤقتاً.
{{-- Internal note: Price includes 15% VAT --}}
<div class="price-box">
<strong>Total: {{ $formattedTotal }}</strong>
</div>
<!-- Public HTML comment visible in browser source -->
تستخدم أطر الواجهة الأمامية مثل Vue الأقواس المزدوجة أيضاً، ولمنع Blade من محاولة ترجمتها نضع رمز @ قبلها مثل @{{ item.name }} أو نستخدم كتلة @verbatim. وعند تمرير مصفوفات PHP إلى كود JavaScript، استخدم دائماً دالة Js::from لضمان التشفير الآمن.
- تجاهل تعبير مفرد (@{{ }} Syntax): وضع علامة @ قبل الأقواس يجعل Blade يتركها كما هي لإطار JavaScript.
- تجاهل كتلة كاملة (@verbatim Block): يحمي منطقة كاملة من القالب تحتوي على عدة متغيرات خاصة بالواجهة الأمامية.
- تحويل آمن للبيانات (Js::from): يحول مصفوفات PHP إلى كائنات JavaScript مع تعقيم الرموز الخاصة بالكامل.
<div id="app">
<span>@{{ clientSideTitle }}</span>
</div>
<script>
const settings = {{ Js::from($chartSettings) }};
</script>
يقضي الالتزام الصارم بقواعد الطباعة الآمنة في Blade على ثغرات حقن السكربتات في تطبيقات الويب. استعن بالملخص المرجعي التالي لاختيار الصيغة الصحيحة لطباعة النصوص وكتابة التعليقات وتمرير البيانات لبيئة JavaScript.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| طباعة المتغيرات | استخدام echo الخام أو {!! !!} مع مدخلات المستخدم غير الموثوقة | الطباعة المعقمة تلقائياً ضد XSS عبر الأقواس المزدوجة {{ }} |
| توثيق القوالب | كتابة تعليقات HTML تظهر لجميع الزوار في سورس الصفحة | كتابة تعليقات Blade الخادمة {{-- --}} التي تُحذف عند الترجمة |
| بيانات JavaScript | دمج النصوص يدوياً داخل وسم script مما يعرضه لكسر الوسم | التحويل المشفر الآمن للمصفوفات والكائنات عبر Js::from |
| أقواس أطر الواجهة | حدوث خطأ ترجمة عند استخدام أقواس Vue أو Alpine داخل القالب | الهروب النظيف عبر البادئة @{{ }} أو كتلة @verbatim |
@verbatim
<div class="vue-widget">
<p>{{ message }}</p>
</div>
@endverbatim
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «قواعد محرك القوالب Blade والطباعة الآمنة ضد XSS» مفاهيم آلية ترجمة وتخزين قوالب Blade، والطباعة الآمنة والحماية من XSS، ومخاطر الطباعة الخام بدون تعقيم وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «التوجيهات الشرطية وحلقات التكرار في قوالب Blade» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Blade Syntax طباعة Blade
- طباعة البيانات بأمان مع الحماية التلقائية من ثغرات XSS عبر {{ }} وفهم خطورة الطباعة الخام {!! !!} مع مدخلات المستخدم.
- للمراجعة
- 02 How Blade Template Compilation Works آلية ترجمة وتخزين قوالب Blade
- المفهوم الهندسي والتطبيق العملي المباشر لقسم آلية ترجمة وتخزين قوالب Blade في إطار العمل Laravel 12.
- للمراجعة
- 03 Escaped Output and XSS Protection الطباعة الآمنة والحماية من XSS
- المفهوم الهندسي والتطبيق العملي المباشر لقسم الطباعة الآمنة والحماية من XSS في إطار العمل Laravel 12.
- للمراجعة
- 04 Unescaped Raw Output Security Risks مخاطر الطباعة الخام بدون تعقيم
- المفهوم الهندسي والتطبيق العملي المباشر لقسم مخاطر الطباعة الخام بدون تعقيم في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «آلية ترجمة وتخزين قوالب Blade» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «الطباعة الآمنة والحماية من XSS» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من آلية ترجمة وتخزين قوالب Blade في إطار العمل Laravel 12؟
يسهم آلية ترجمة وتخزين قوالب Blade في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «الطباعة الآمنة والحماية من XSS» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة مخاطر الطباعة الخام بدون تعقيم بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة مخاطر الطباعة الخام بدون تعقيم.
لماذا يُعد تطبيق كتابة تعليقات Blade على الخادم مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تجاهل الأقواس لأطر عمل JavaScript في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مقارنة صيغ الطباعة في Blade؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.