انتقل إلى المحتوى
AHMET.YUSUF EN
العودة إلى المدوّنة ↗من دفتر التجارب / 18
11 دقائق للقراءة

بناء بيئة تطوير احترافية لـ Laravel باستخدام VS Code

بناء بيئة تطوير احترافية لـ Laravel باستخدام VS Code

يُعد Visual Studio Code أحد أكثر محررات الأكواد مرونة، لكنه لا يفهم جميع تفاصيل Laravel بمجرد تثبيته.

يعتمد Laravel على العديد من الميزات التي تجعل تطوير التطبيقات أسرع وأسهل، مثل الدوال الديناميكية (Dynamic Methods)، والواجهات البرمجية (Facades)، وحقن الاعتماديات (Dependency Injection)، ونماذج Eloquent، ومحرك القوالب Blade.

ورغم أن هذه الميزات تمنح Laravel قوته ومرونته، فإنها قد تجعل فهم المشروع والتنقل بين ملفاته أكثر صعوبة بالنسبة لمحررات الأكواد التقليدية.

فقد تجد نفسك تبحث يدوياً عن ملف Blade المرتبط بأحد Controllers، أو تحاول معرفة مكان تعريف Route معين، أو لا تحصل على اقتراحات تلقائية للدوال والخصائص المتاحة في نماذج Eloquent.

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

باستخدام مجموعة مدروسة من إضافات VS Code، يمكنك الحصول على محرر ذكي يساعدك على كتابة الأكواد، والتنقل بين الملفات، وتنسيق الشيفرة البرمجية، وتشغيل الاختبارات بكفاءة.

الهدف ليس تثبيت أكبر عدد ممكن من الإضافات، بل اختيار الأدوات التي تحل مشكلات حقيقية أثناء تطوير مشاريع Laravel.

1. الذكاء البرمجي الأساسي

قبل تثبيت الإضافات المخصصة لـ Laravel، نحتاج أولاً إلى توفير دعم قوي للغة PHP.

PHP Intelephense

رابط الإضافة: PHP Intelephense – Visual Studio Marketplace

تُعد PHP Intelephense واحدة من أشهر الإضافات التي توفر دعماً متقدماً للغة PHP داخل VS Code.

فهي تقدم العديد من الميزات التي نتوقع عادةً وجودها في بيئات التطوير المتكاملة (IDE)، ومن أبرزها:

  • الإكمال التلقائي الذكي لأسماء الفئات (Classes) والدوال والخصائص.
  • الانتقال مباشرة إلى مكان تعريف الدالة أو الفئة (Go to Definition).
  • البحث عن جميع الأماكن التي يُستخدم فيها جزء معين من الكود (Find All References).
  • عرض معاملات الدوال وأنواع البيانات المتوقعة.
  • اكتشاف الأخطاء البرمجية أثناء الكتابة.
  • فهرسة المشروع لتسهيل البحث والتنقل بين ملفاته.
  • تحليل أنواع البيانات لتقديم اقتراحات أكثر دقة.

تشكل Intelephense الأساس الذي يعتمد عليه المحرر لفهم كود PHP، وهي مفيدة حتى عند العمل على مشاريع لا تستخدم Laravel.

النسخة المجانية والمدفوعة: توفر النسخة المجانية معظم الميزات اللازمة للعمل اليومي، بينما تتطلب بعض الميزات المتقدمة، مثل إعادة تسمية الرموز البرمجية في كامل المشروع (Rename Refactoring)، ترخيصاً مدفوعاً.

نصيحتي: ابدأ بهذه الإضافة قبل تثبيت أي أدوات إضافية لتحليل PHP، وتجنب تشغيل عدة Language Servers تؤدي الوظائف نفسها حتى لا تحصل على اقتراحات ورسائل تشخيص متكررة.

2. إضافات تفهم Laravel نفسه

دعم PHP وحده لا يكفي للحصول على تجربة تطوير متكاملة مع Laravel.

فالكثير من إمكانيات Laravel تعتمد على قواعد خاصة بإطار العمل، وخدمات يتم استدعاؤها ديناميكياً، ودوال مساعدة قد لا تتمكن أدوات تحليل PHP العامة من فهمها بالكامل.

وهنا يأتي دور الإضافات المتخصصة في Laravel.

Official Laravel Extension (LSP)

رابط الإضافة: Laravel – Visual Studio Marketplace

هذه هي الإضافة الرسمية لـ Laravel في VS Code، وهي تعتمد على Laravel Language Server Protocol لتوفير ميزات تفهم بنية إطار العمل وطريقة عمله.

ومن أبرز ما تقدمه:

  • اقتراحات برمجية مخصصة لـ Laravel.
  • اكتشاف المشكلات في ملفات PHP وBlade.
  • عرض معلومات إضافية عند تمرير المؤشر فوق أجزاء الكود.
  • تسهيل التنقل بين الملفات والعناصر المرتبطة بإطار العمل.
  • إجراءات برمجية مساعدة (Code Actions).

تعمل هذه الإضافة إلى جانب Intelephense، ولا يُفترض أن تحل محلها بالكامل.

فبينما تتولى Intelephense فهم لغة PHP بشكل عام، تركز إضافة Laravel الرسمية على الميزات الخاصة بإطار العمل.

ملاحظة حول التوافق: تتطلب الإضافة PHP 8.2 أو أحدث، وتدعم إصدارات Laravel التي تشملها سياسة الدعم الرسمية الحالية.

إذا كنت تعمل على مشروع Laravel حديث، فهذه من أولى الإضافات التي أنصح بتثبيتها.

Laravel Extra Intellisense

رابط الإضافة: Laravel Extra Intellisense – Visual Studio Marketplace

توفر هذه الإضافة مستوى إضافياً من الإكمال التلقائي، يعتمد على الإعدادات والمكونات الموجودة فعلياً داخل مشروعك.

ومن الميزات التي يمكن أن توفرها، بحسب طبيعة المشروع:

  • اقتراح أسماء المسارات (Routes) ومعاملاتها.
  • الإكمال التلقائي لأسماء ملفات Blade والمتغيرات المرتبطة بها.
  • اقتراح مفاتيح الإعدادات (Configuration Keys).
  • اقتراح مفاتيح الترجمة.
  • الإكمال التلقائي لقواعد التحقق (Validation Rules).
  • اقتراح أسماء Middleware.
  • المساعدة في التعامل مع خصائص نماذج Eloquent.

لنفترض أنك تكتب الكود التالي:

return redirect()->route('dashboard');

بدلاً من حفظ أسماء المسارات أو العودة في كل مرة إلى ملفات تعريفها، يمكن للإضافة مساعدتك على اكتشاف الأسماء المتاحة داخل المشروع.

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

انتبه إلى الأمان والأداء

هناك نقطة مهمة يجب معرفتها قبل تثبيت Laravel Extra Intellisense.

تعتمد الإضافة على تنفيذ أوامر PHP تتفاعل مع تطبيق Laravel للحصول على المعلومات اللازمة للإكمال التلقائي.

وهذا يعني أن بعض الأكواد المرتبطة بتهيئة التطبيق أو بمزودي الخدمات (Service Providers) قد تُنفذ أثناء عمل المحرر.

إذا كانت هذه الأكواد تتصل بخدمات خارجية، أو تنفذ عمليات حساسة، أو تتطلب موارد كبيرة، فقد يؤثر ذلك على الأمان أو الأداء.

نصيحتي: لا تثبت هذه الإضافة تلقائياً لمجرد أنها تدعم Laravel. ابدأ بالإضافة الرسمية، ثم جرّب Laravel Extra Intellisense إذا وجدت أنك تحتاج إلى إمكانيات إضافية لا توفرها الأدوات الموجودة لديك.

3. التنقل بين الملفات والعمل مع Blade

يعتمد Laravel على فصل منطق التطبيق عن واجهات العرض.

فملفات Controllers موجودة في مكان، وقوالب Blade في مكان آخر، وتعريفات Routes في ملفات مختلفة.

ورغم أهمية هذا التنظيم، فإن التنقل المستمر بين هذه الملفات قد يستهلك وقتاً كبيراً.

Laravel Goto View

رابط الإضافة: Laravel Goto View – Visual Studio Marketplace

تعالج هذه الإضافة مشكلة بسيطة لكنها تتكرر كثيراً أثناء تطوير تطبيقات Laravel: الانتقال من Controller إلى ملف Blade المرتبط به.

لنفترض أن لديك الدالة التالية:

public function show(Post $post)
{
    return view('posts.show', compact('post'));
}

في الوضع التقليدي، ستحتاج إلى فتح مستكشف الملفات والبحث عن:

resources/views/posts/show.blade.php

أما باستخدام Laravel Goto View، فيمكنك الضغط على اسم العرض مع Ctrl+Click، أو Cmd+Click على macOS، للانتقال مباشرة إلى ملف Blade المطلوب.

قد يبدو هذا اختصاراً بسيطاً، لكنه يوفر الكثير من الوقت عند العمل على مشاريع كبيرة تحتوي على عشرات Controllers ومئات ملفات العرض.

نصيحتي: جرّب أولاً إمكانيات التنقل الموجودة في إضافة Laravel الرسمية، ثم استخدم Laravel Goto View إذا كانت توفر لك ميزة إضافية تحتاج إليها.

Laravel Blade Snippets

رابط الإضافة: Laravel Blade Snippets – Visual Studio Marketplace

يُعد Blade من أفضل ميزات Laravel، لكن كتابة التوجيهات البرمجية (Directives) بشكل متكرر قد تكون مزعجة أحياناً.

تقدم هذه الإضافة اختصارات جاهزة للعديد من تراكيب Blade الشائعة.

على سبيل المثال، يمكنك كتابة:

b:if

ثم استخدام الاختصار المناسب لتوسيعها إلى:

@if ($condition)

@endif

وبذلك تختصر كتابة التوجيهات والهياكل المتكررة، مع تقليل الأخطاء في الصياغة.

تكون هذه الإضافة مفيدة بشكل خاص إذا كنت تعتمد على Blade Components وLayouts في بناء واجهات مشاريعك.

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

4. جودة الكود وتنظيم المشروع

بيئة التطوير الاحترافية لا تقتصر على مساعدتك في كتابة الكود بسرعة.

بل يجب أن تساعدك أيضاً على المحافظة على شيفرة نظيفة، ومنظمة، ومتسقة، خصوصاً عند العمل ضمن فريق.

Laravel Pint

التوثيق الرسمي: Laravel Pint

إضافة VS Code: Laravel Pint – Visual Studio Marketplace

تُعد Laravel Pint الأداة الرسمية من Laravel لتنسيق أكواد PHP، وهي مبنية على PHP CS Fixer.

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

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

تأتي Pint مثبتة مسبقاً في مشاريع Laravel الحديثة، لكن إذا لم تكن موجودة في مشروعك، يمكنك إضافتها باستخدام Composer:

composer require laravel/pint --dev

ثم تشغيلها من Terminal:

./vendor/bin/pint

ولجعل العملية أكثر سهولة، يمكنك تثبيت إضافة Laravel Pint الخاصة بـ VS Code.

تسمح لك هذه الإضافة بتنسيق ملفات PHP مباشرة من المحرر، مع إمكانية تشغيل التنسيق تلقائياً عند حفظ الملف.

ملاحظة مهمة: Laravel Pint أداة رسمية من Laravel، لكن إضافة VS Code المذكورة هنا مطورة من طرف ثالث، وليست إضافة رسمية.

PHP Namespace Resolver

رابط الإضافة: PHP Namespace Resolver – Visual Studio Marketplace

من المهام المتكررة في تطوير تطبيقات PHP استيراد الفئات البرمجية (Classes) وتنظيم مساحات الأسماء (Namespaces).

على سبيل المثال، عند استخدام Request داخل Controller:

public function store(Request $request)
{
    // ...
}

يجب التأكد من وجود الاستيراد المناسب في أعلى الملف:

use Illuminate\Http\Request;

تساعد PHP Namespace Resolver على إدارة عمليات الاستيراد وتنظيم تعريفات Namespaces، مما يقلل الحاجة إلى كتابة هذه الأسطر يدوياً.

وتظهر فائدتها عند التعامل مع Controllers وServices وJobs وEvents وغيرها من المكونات التي تعتمد على عدد كبير من الفئات.

نصيحتي: بعض ميزات الاستيراد متوفرة أصلاً في Intelephense وأدوات PHP الأخرى، لذلك لا أنصح بتثبيت هذه الإضافة إلا إذا كانت أوامرها المتخصصة ستضيف قيمة فعلية إلى طريقة عملك.

5. أدوات إضافية بحسب طبيعة المشروع

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

Tailwind CSS IntelliSense

رابط الإضافة: Tailwind CSS IntelliSense – Visual Studio Marketplace

إذا كنت تستخدم Tailwind CSS في بناء واجهات Laravel، فهذه من الإضافات المهمة.

توفر لك:

  • إكمالاً تلقائياً لأسماء Tailwind CSS Classes.
  • معاينة خصائص CSS عند تمرير المؤشر فوق الكلاس.
  • اكتشاف أسماء الكلاسات غير الصحيحة.
  • أدوات تساعد على كتابة وتحرير تنسيقات Tailwind بكفاءة.

وتكون مفيدة بشكل خاص عند العمل باستخدام تقنيات TALL Stack، والتي تتكون من Tailwind CSS وAlpine.js وLaravel وLivewire.

أما إذا كنت تستخدم Bootstrap أو SCSS دون Tailwind، فلا حاجة إلى تثبيتها.

Better PHPUnit

رابط الإضافة: Better PHPUnit – Visual Studio Marketplace

تُعد الاختبارات البرمجية جزءاً أساسياً من تطوير تطبيقات Laravel الموثوقة.

تساعدك Better PHPUnit على تشغيل الاختبارات مباشرة من VS Code دون الحاجة إلى الانتقال إلى Terminal في كل مرة.

فبدلاً من تشغيل مجموعة الاختبارات كاملة بعد أي تعديل، يمكنك التركيز على اختبار محدد أو ملف اختبارات معين.

وهذا يجعل دورة التطوير أسرع، خصوصاً إذا كنت تعتمد على أسلوب التطوير المدفوع بالاختبارات (Test-Driven Development أو TDD).

6. إعداد VS Code للعمل مع Laravel

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

يسمح VS Code بتخصيص إعدادات مستقلة لكل مشروع من خلال الملف:

.vscode/settings.json

يمكنك البدء بالإعدادات التالية:

{
  "editor.formatOnSave": true,

  "[php]": {
    "editor.defaultFormatter": "open-southeners.laravel-pint"
  },

  "files.exclude": {
    "**/.git": true,
    "**/node_modules": true
  },

  "search.exclude": {
    "**/vendor": true,
    "**/node_modules": true
  }
}

تقدم هذه الإعدادات مجموعة من التحسينات العملية:

  • تنسيق PHP تلقائياً: تشغيل Laravel Pint عند حفظ ملفات PHP.
  • مستكشف ملفات أكثر تنظيماً: إخفاء بعض المجلدات التي لا تحتاج إلى استعراضها باستمرار.
  • نتائج بحث أكثر دقة: استبعاد مجلدات الاعتماديات مثل vendor وnode_modules من عمليات البحث المعتادة.

من المهم معرفة أن هذه الإعدادات لا تحذف الملفات أو المجلدات من المشروع، وإنما تتحكم في طريقة عرضها والبحث داخلها في VS Code.

كما أنها ليست إعدادات إلزامية لجميع المشاريع. فإذا كنت تحتاج إلى البحث داخل vendor بشكل متكرر، يمكنك تعديلها بما يناسب احتياجاتك.

وفي المشاريع الجماعية، من المفيد حفظ الإعدادات المشتركة ضمن المستودع البرمجي (Repository)، حتى يحصل جميع أعضاء الفريق على تجربة تطوير متقاربة.

7. لا تثبت كل الإضافات!

من الأخطاء الشائعة عند إعداد VS Code لـ Laravel تثبيت عدد كبير من الإضافات التي تؤدي الوظائف نفسها.

قد يبدو أن زيادة عدد الإضافات ستجعل المحرر أكثر ذكاءً، لكن النتيجة قد تكون عكس ذلك تماماً.

فوجود أدوات متداخلة قد يؤدي إلى:

  • ظهور اقتراحات إكمال تلقائي مكررة.
  • تكرار رسائل الأخطاء والتحذيرات.
  • تعارض أدوات تنسيق الكود.
  • زيادة استهلاك الذاكرة والمعالج.
  • تشغيل عمليات إضافية في الخلفية.
  • صعوبة معرفة الإضافة المسؤولة عن مشكلة معينة.

لذلك، أنصح بالبدء بمجموعة صغيرة من الأدوات، ثم إضافة ما تحتاج إليه تدريجياً.

ما الإضافات التي أنصح بالبدء بها؟

بالنسبة لي، تتكون البيئة الأساسية من ثلاث أدوات:

  1. PHP Intelephense: لفهم PHP وتوفير ميزات الإكمال التلقائي والتنقل داخل الكود.
  2. Official Laravel Extension: لفهم مكونات Laravel وتقديم ميزات خاصة بإطار العمل.
  3. Laravel Pint: للمحافظة على تنسيق موحد للكود، مع إضافة VS Code الخاصة بها.

بعد ذلك، يمكنك تثبيت الأدوات الأخرى بحسب احتياجك الفعلي.

فإذا كنت تواجه صعوبة في الانتقال من Controllers إلى ملفات Blade، جرّب Laravel Goto View.

وإذا كنت تحتاج إلى اقتراحات أكثر تفصيلاً لأسماء المسارات والإعدادات، فقد تستفيد من Laravel Extra Intellisense.

أما إذا كنت تكتب قوالب Blade باستمرار، فستكون Laravel Blade Snippets إضافة عملية.

وبالطريقة نفسها، يمكنك إضافة أدوات Tailwind أو الاختبارات بحسب طبيعة مشروعك.

الفكرة الأساسية: لا تجعل عدد الإضافات مقياساً لقوة بيئة التطوير. المهم هو مقدار الوقت والجهد الذي توفره لك أثناء العمل.

الخلاصة

تحويل VS Code إلى بيئة تطوير احترافية لـ Laravel لا يحتاج إلى عشرات الإضافات، ولا إلى حزمة واحدة تحاول القيام بكل شيء.

ما تحتاج إليه هو مجموعة أدوات متكاملة، تؤدي كل واحدة منها وظيفة واضحة.

توفر PHP Intelephense الأساس اللازم لفهم لغة PHP، بينما تضيف Laravel Extension إمكانيات متخصصة لفهم إطار العمل. وتساعدك إضافات التنقل والقوالب على تقليل الأعمال المتكررة، في حين تتولى Laravel Pint المحافظة على تنسيق الكود.

والنتيجة هي بيئة تطوير تساعدك على التركيز على ما يهم فعلاً: كتابة الكود، وفهم المشروع، واختبار وظائفه، والمحافظة على جودته.

ابدأ بالأدوات الأساسية، واكتشف ما يبطئ عملك، ثم أضف الأدوات التي تعالج هذه المشكلات فعلياً.

فهكذا تبني بيئة تطوير احترافية لـ Laravel باستخدام VS Code.

المصادر