PHPبرمجة

PHP – Laravel – شرح الدالة __invoke() وكيفية استدعائها

بعض اﻷحيان نكون في حاجة إلى انشاء كلاس كونترولر (Controller) جديد بدالة واحدة فقط, يعني بدون الدوال اﻹفتراضية index(), create(), store(), show(), edit(), update(), destroy() التي تكون داخل كونترولر.
لكن بعض اﻷحيان يصعب علينا تسمية تلك الدالة, للهذا نستعمل الدالة __invoke(), لتتكون وحدها في كونترولر وهي موجودة في اﻹصدار 5.6.28 وما فوق.

ملاحظة: هذه الدالة تكون وحدها في كونترولر, وتأتي ب برامتر $request وأيضا لا يتم استدعائها في ملف الروت (Route) فقط نقوم باستدعاء كونترولر ويتم التعرف عليها أليا وتوجيه الرابط اليها.

انشاء دالة __invoke():

أيضا فريق لارافيل أضاف لنا خاصية جميلة, هذه الخاصية تقوم بإضافة الدالة داخل كونترولر عند انشائه وذالك بإضافة الخاصية --invokable بعد اسم ملف كونترولر.
مثال:

php artisan make:controller ArticleController --invokable

بعد تنفيذ اﻷمر سيتم إنشاء كلاس كونترولر جديد باسم ArticleController داخل المسار app/Http/Controllers/ArticleController.php هكذا:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        //
    }
}

كما ترى لقد تم انشاء الدالة __invoke مع برامتر واحد هو $request, أيضا يمكننا عمل الكثير من البرامترات وتمريرها عبر الروت.
مثال:

public function __invoke($id, $name)
    {
        //
    }

و لستدعاء الدالة داخل ملف الروت routes/web.php, نكتب فقط اسم الكنترولر مع تمرير البرامترات في الرابط.
مثال:

Route::get('article/{id}/{name}', 'ArticleController');

الوسوم
اظهر المزيد

admin

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم .. إسمي زكرياء الزحتي، من المغرب، من مواليد 1993 م في مدينة طنجة، مهتم في، (البرمجة - تطوير أنظمة وتطبيقات الويب - قواعد البيانات - تصميم صفحات الويب - أنظمة لينكس) . اكتب بما فيه فائدة للآخرين هنا .. سواءاً عن التقنية أو التجارب الشخصية أو مواضيع متنوعة .. اكتب وأدون تجاربي واشارككم بعض اللحظات والمواضيع المفيدة ..

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
إغلاق