I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Email

contact@ibrahimahmed.online

Website

https://ibrahimahmed.online/

Social Links

Laravel Macros: الدليل الشامل لتوسيع Laravel بسهولة

تعرف على Laravel Macros، الطريقة الأسهل لإضافة وظائف جديدة إلى Laravel دون تعديل الكود الأصلي. شرح وافي خطوة بخطوة للمبتدئين مع أمثلة عملية. 🚀

Laravel Macros: الدليل الشامل لتوسيع Laravel بسهولة

فهم Laravel Macros: الطريقة الأسهل لتوسيع Laravel

Laravel Macros واحدة من أقوى الميزات اللي بتخليك تضيف وظائف جديدة لكلاسات Laravel الأساسية بسهولة جدًا، بدون الحاجة للتعديل في الكود الأصلي أو استخدام الوراثة التقليدية في PHP. ببساطة، بتسمحلك تضيف ميثودز جديدة للكلاسات اللي بتدعم الماكروز، وتستخدمها كأنها جزء أصيل منها.

ليه ممكن نحتاج Laravel Macros؟

لو أول مرة تسمع عن Laravel Macros، ممكن تسأل: ليه أصلاً نستخدمها؟ وليه منلجأش للوراثة العادية (Inheritance)؟

تخيل إنك بتبني تطبيق بيعتمد بشكل كبير على تصدير البيانات كملفات CSV. طبيعي إن Laravel مش بيدعم الوظيفة دي بشكل مباشر، لأن دي حاجة متخصصة مش كل المشاريع بتحتاجها.

إزاي تعرف Laravel Macro؟

خطوة 1: التأكد إن الكلاس بيدعم Macros

مش كل الكلاسات في Laravel تقدر تضيف لها ماكروز، لازم تكون بتستخدم Trait اسمه Macroable. أي كلاس بيحتوي على الـ Trait ده تقدر تضيف عليه ميثودز جديدة.

خطوة 2: تعريف الماكرو باستخدام macro

Laravel بيدينا ميثود macro عشان نستخدمها في تسجيل الماكروز الجديدة. خلينا نضيف وظيفة تصدير البيانات كـ CSV:

use Illuminate\Http\Response; 
Response::macro('csv', function ($headers, $rows) {
    $output = fopen('php://output', 'w');
    fputcsv($output, $headers);
    foreach ($rows as $row) {
        fputcsv($output, $row);
    }
    fclose($output);
}); 

خطوة 3: استخدام الماكرو في التطبيق

دلوقتي، بعد ما سجلنا الماكرو، نقدر نستخدمه بسهولة كأن Laravel بيجي بيه افتراضيًا:

return response()->csv(['Name', 'Email'], [
    ['Ahmed', 'ahmed@example.com'],
    ['Sara', 'sara@example.com']
]); 

فين نحط Laravel Macros في المشروع؟

في Laravel تقدر تضيف الماكروز في أي مكان، بس من الأفضل تحطها في Service Provider عشان تضمن إنها بتتسجل قبل ما التطبيق يشتغل.

استخدام Mixin لتجميع مجموعة من الماكروز

لو عندك أكتر من ماكرو وعايز تنظمهم بطريقة كويسة، تقدر تستخدم حاجة اسمها Mixin. وهي عبارة عن كلاس بتجمع فيه مجموعة من الماكروز وتضيفها مرة واحدة لأي كلاس.

خطوة 1: إنشاء كلاس جديد لتجميع الماكروز

في app/Mixins (لو المجلد مش موجود، أنشئه)، أضف ملف جديد ResponseMacros.php:

namespace App\Mixins;

use Closure;

class ResponseMacros
{
    public function csv(): Closure
    {
        return function ($headers, $rows) {
            $output = fopen('php://output', 'w');
            fputcsv($output, $headers);
            foreach ($rows as $row) {
                fputcsv($output, $row);
            }
            fclose($output);
        };
    }

إزاي Laravel Macros بتشتغل داخليًا؟

لو عندك فضول تعرف Laravel بيدير الماكروز إزاي، هتلاقي إن الـ Macroable trait هو اللي مسؤول عن كل السحر ده.

Laravel بيستخدم مصفوفة $macros داخل كل كلاس بيستخدم Macroable

عند تعريف أي ماكرو، بيتم تخزينه داخل المصفوفة باستخدام macro()

عند استدعاء أي ميثود مش موجودة، __call() و __callStatic() بيتدخلوا

الخلاصة

Laravel Macros بتسمحلك تضيف ميثودز جديدة لأي كلاس في Laravel بسهولة.

بتكون مفيدة لو محتاج تضيف دوال متخصصة زي تصدير البيانات أو تنسيق النصوص.

ممكن تضيف الماكروز داخل Service Provider أو تجمعها في Mixin لتنظيم أكتر.

Laravel بيستخدم الـ Macroable trait عشان يدير الماكروز داخليًا بطريقة ديناميكية.

دلوقتي دورك!

جرب تضيف ماكرو جديد في تطبيقك واستخدمه. 🚀


Share

Related posts

May 23, 2025 • 2 min read
FlyEnv - أداة إدارة بيئة تطوير متكاملة للمطورين

FlyEnv هي أداة شاملة لإدارة بيئات التطوير، بتسهل على المطورين التعامل مع إصدارات متعددة من لغات البر...

Apr 28, 2025 • 2 min read
فهم نمط الـ Repository في Laravel: دليل شامل

تعلم كل ما تحتاج معرفته عن نمط الـ Repository في Laravel. هذا الدليل يشرح كيفية تنفيذه بفعالية، مميز...

Mar 28, 2025 • 2 min read
اجعل Laravel يقوم بـ Git Pull تلقائيًا بعد كل Push في GitHub باستخدام Webhook – بدون تدخل يدوي! 🚀

هل تعبت من الدخول إلى السيرفر كل مرة لتحديث الكود بعد git push؟ 🤦‍♂️ في هذا المقال، ستتعلم كيف تجعل...