اختر لونك:
وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ ۖ وَسَتُرَدُّونَ إِلَىٰ عَالِمِ الْغَيْبِ وَالشَّهَادَةِ فَيُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ [ التوبة : ( 105 )] كلمة الإدارة

يرجى إختيار القسم المناسب قبل النشر وسيعاقب المخالف بإنذار أول مرة وسيتم حظره إذا تكرر ذلك كلمة الإدارة

يُمنع كتابة مواضيع السحر والشعوذة والروحانيات والابراج بكافة الأشكال والمخالف سيعاقب بحظر مؤقت وإذا تكرر سيكون حظر دائم تنبيه هام جداً



أضف رد جديد
 
LinkBack أدوات الموضوع انواع عرض الموضوع

قديم 23-02-2019, 04:06 PM   #1
تاريخ التسجيل: Feb 2019
المشاركات: 1,010
التقييم: 10
تاريخ التسجيل: Feb 2019
المشاركات: 1,010
التقييم: 10
افتراضي طريقة عمل مزوّدات الخدمة والآليّة التي تتيح بها مرونة أكبر في التعامل مع الأصناف في l

طريقة عمل مزوّدات الخدمة والآليّة التي تتيح بها مرونة أكبر في التعامل مع الأصناف في Laravel.

سنرى في هذا الدّرس كيفيّة الاستفادة من تعليمة inject@ لإعادة استخدام مزوّد خدمة في قالب Blade.

laravel-inject-service-provider-blade.png

استخدمنا في الدرس السابق مزوّد خدمة داخل متحكّم على النحو التالي:

public function index(RocketShipContract $rocketship)
{
$boom = $rocketship->blastOff();

return view('demo.index', compact('boom'));
}
سنفترض أن لدينا ثلاثة عروض view1 وview2 إضافة للعرض index (كلّها في نفس المجلّد):

العرض view1:

<!-- تعليمات خاصّة بالعرض view1 -->
@include('demo.index')
<!-- تعليمات خاصّة بالعرض view1 -->
العرض view2:

<!-- تعليمات خاصّة بالعرض view2 -->
@include('demo.index')
<!-- تعليمات خاصّة بالعرض view2 -->
العرض index:

@extends('layouts.master')
@section('content')
{{ $boom }}
@endsection
نلاحظ أن العرض index يُضمَّن في العرضيْن view1 وview2. سنفترض أيضا أن لدينا الدالتين التاليتين في المتحكّم:

public function function1(RocketShipContract $rocketship)
{
$boom = $rocketship->blastOff();

return view('demo.view1', compact('boom'));
}

public function function2(RocketShipContract $rocketship)
{
$boom = $rocketship->blastOff();

return view('demo.view2', compact('boom'));
}
تعمل الطريقة أعلاه دون مشكل؛ ولكن ماذا لو أضفنا مسارا ثالثا يستدعي عرضا آخر يُضمِّن العرض index؟

إذا اتبعنا نفس الطريقة فسنضيف دالة جديدة إلى المتحكّم كالتالي:

public function function3(RocketShipContract $rocketship)
{
$boom = $rocketship->blastOff();

return view('demo.view3', compact('boom'));
}
يمكن أن نلاحظ بوضوح وجود الكثير من التكرار لاستخدام الصّنف RocketShipContract.

لتلافي هذا الوضع يعرّف Laravel حقن الخدمة Service injection.

يقوم المبدأ على استخدام التعليمة inject@ التي تتيح استدعاء صنف مّا مباشرة في العرض. بتطبيق هذا المبدأ في الحالة أعلاه نعدّل العرض index ليصبح كالتالي:

@inject('boom', 'App\Helpers\Contracts\RocketShipContract')

@extends('layouts.master')

@section('content')

{{ $boom->blastOff() }}

@endsection
تأخذ التعليمة inject@ معطييْن؛ الأول (boom في المثال) اسم المتغيّر الذي سنحتفظ فيه بكائن من الصّنف الممرّر في المعطى الثاني (RocketShipContract). يمكننا بعد ذلك استخدام المتغيّر واستدعاء الدالة.

بالعودة إلى دوال المتحكّم فيمكننا تغييرها كالتالي:

public function function1()
{
return view('view1');
}
public function function2()
{
return view('view2');
}
نرى بوضوح أن الطريقة الأخيرة تتيح قابليّةً أكبر لإعادة الاستخدام.

حقن الخدمة - كما رأينا - وسيلة مفيدة لإعادة استخدام وظائف من التطبيق وتقديمها في عروض، إلا أنه لا يُنصَح باستخدامها إلا عند الحاجة؛ ومن الضروريّ عدم المبالغة في استخدامها.

الفارس غير متواجد حالياً   اقتباس
قديم 26-07-2019, 03:18 PM   #2
الصورة الرمزية هديل الحرف
تاريخ التسجيل: Jul 2019
العمر: 29
المشاركات: 504
التقييم: 10
افتراضي

بارك الله فيك
إستمر ولك التوفيق بـإذن الله
تقديري وإحترامي
هديل الحرف غير متواجد حالياً   اقتباس
أضف رد جديد

الكلمات الدلالية (Tags)
منتديات رحيل, رحيل, شبكة رحيل, r7il, r7il.com


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
قياس الوقت وتاريخه admin المواضيع العامة 2 04-03-2020 01:40 AM
معجزات سورة الفاتحة admin قسم القرآن الكريم 1 28-07-2019 04:23 AM
ضبط إعدادات الشحن (Shipping) لمتجرك الإلكتروني على منصة WooCommerce مهرة النجدية قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 1 22-07-2019 06:58 PM
طريقة التسويق باستخدام اعلانات سناب شات raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 08-04-2019 06:55 PM
دليلك الشامل حول النظام البيئي لِ “جافاسكريبت” raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 06:50 PM


الساعة الآن 06:57 PM

 


Content Relevant URLs by vBSEO ©2010, Crawlability, Inc.