PHP-Watcher: أداة تعمل على تبسيط عملية تطوير التطبيقات طويلة العمر



نحن نحب PHP لبساطته: تكتب الشفرة وتحديث الصفحة في المتصفح ورؤية التغييرات على الفور. ولكن إذا كان الأمر يتعلق بأوامر وحدة التحكم ، والتي يمكن أن تكون عمليات طويلة الأمد - على سبيل المثال ، إذا كتبنا خادم HTTP غير متزامن لتحميل الملفات - فقد تكون عملية التطوير مؤلمة للغاية.

لم يكن هناك حل مناسب في نظام PHP البيئي لإعادة تشغيل التطبيقات تلقائيًا عند إجراء تغييرات على الكود المصدري. لذلك ، قررت أن أجعل أداتي - في PHP خالص مع إمكانية الوصول من خلال الملحن.

انها مثل Nodemon ، ولكن في PHP


لفترة من الوقت أنا نفسي تستخدم Nodemon . هذه أداة من عالم Node.js ، ومع ذلك ، إذا قمت بتخصيصها قليلاً ، يمكنك استخدامها مع البرامج النصية PHP. ولكن في الواقع ، لا أريد تثبيت Node.js وسحب مجموعة من حزم NPM غير المعروفة بالنسبة لي في تطبيق PHP غير المتزامن لإعادة تشغيله.

بما أنني أتواصل بنشاط على Twitter ، فقد سألته عن من عانى من هذه المشكلة وأرغب في الحصول على حل. رؤية الاهتمام ، جلست لكتابة أداة توفر نفس الوظيفة مثل Nodemon ، فقط في PHP و PHP .



لقد مر شهر: مع PHP-Watcher لم تعد بحاجة إلى تثبيت Nodemon أو أي حزمة NPM أخرى لتطوير تطبيق PHP الخاص بك لفترة طويلة.

هذا كيف يعمل


يمكن تثبيت المكتبة من خلال الملحن:

composer global require seregazhuk/php-watcher 

تخيل أننا نعمل على تطبيق قائم على Symfony طويل الأمد. نقطة الدخول إلى طلبنا هي ملف public / index.php. نريد تتبع التغييرات في المجلدات src والتكوين. نريد أيضًا إعادة تشغيل التطبيق تلقائيًا بمجرد تغيير شفرة المصدر أو معلمات التكوين. إليك كيفية حل هذه المشكلة:

 php-watcher public/index.php --watch src --watch config 

سيقوم الأمر بتشغيل البرنامج النصي public / index.php ، والذي سيبدأ في تعقب التغييرات في دلائل التكوين والتكوين. بمجرد أن يتغير الملف في أي منها ، سيقوم PHP-Watcher بإعادة تشغيل البرنامج النصي.

بشكل افتراضي ، يتتبع التغييرات في ملفات PHP فقط. ولكن Symfony يخزن التكوينات الخاصة به في yaml. لذلك ، نحتاج إلى إخبار الساعة صراحةً بحيث تتعقب ملفات PHP و yaml. يتم ذلك باستخدام الخيار --ext:

 php-watcher public/index.php --watch src --watch config --ext php,yaml 

افترض أننا نفهم أننا لسنا بحاجة إلى إعادة تشغيل التطبيقات مع أي تغييرات في دليل src. على سبيل المثال ، نود أن نتجاهل التغييرات في الدليل الفرعي src / Migrations. في هذه الحالة ، يمكنك استخدام خيار --ignore:

 php-watcher public/index.php --watch src --watch config --ext php,yaml --ignore Migrations 

الآن سيبدأ PHP-Watcher تتبع التغييرات في دلائل التهيئة src ، لكنه سيتجاهل أي تغييرات داخل دليل Migrations الفرعي. بالإضافة إلى ذلك ، فإنه يتجاهل بشكل افتراضي التغييرات في جميع ملفات dot و VCS.

يدعم Watcher تخصيص سلوكه ليس فقط من خلال خيارات سطر الأوامر ، ولكن أيضًا من خلال ملفات التكوين. إذا كنت لا ترغب في تمرير مجموعة من الخيارات والمعلمات في كل مرة على سطر الأوامر ، يمكنك إنشاء ملف تكوين .php-watcher.yml. على سبيل المثال ، يمكن استبدال الأمر السابق بملف التكوين التالي:

 watch: - src - config extensions: - php - yaml ignore: - Migrations 

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

 php-watcher public/index.php 

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

بشكل افتراضي ، يستخدم PHP-Watcher PHP القابل للتنفيذ لتشغيل البرنامج النصي. نكتب الأمر في المحطة:

 php-watcher public/index.php 

تحت الغطاء ، يتم إنشاء عملية فرعية باستخدام الأمر php public / index.php. في معظم الحالات ، هذا هو ما تحتاجه. ومع ذلك ، إذا كان لدى بيئتك ملف قابل للتنفيذ مختلف ، يمكنك تحديد الأمر الذي سيتم تنفيذه بشكل صريح. على سبيل المثال ، عندما يكون لدينا عدة إصدارات من PHP على نفس النظام ، ونريد تشغيل تطبيقنا مع php7.4 القابل للتنفيذ ، يمكنك استخدام خيار --exec وتحديد ملفك التنفيذي:

 php-watcher public/index.php --exec php7.4 

نفس الشيء من خلال ملف التكوين:

 watch: - src - config executable: php7.4 

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

شكرا لاهتمامكم! يمكن العثور على مزيد من المعلومات حول PHP-Watcher على الصفحة الرئيسية للمشروع على GitHub . تصف الوثائق أنماط الاستخدام الأساسية. لا يزال المشروع قيد التطوير ، لكن واجهة برمجة التطبيقات مستقرة بالفعل. سأكون سعيدا إذا كنت تستخدمه.

ملاحظة: لا تتردد في ترك الملاحظات والاقتراحات من خلال الإصدار على جيثب.

Source: https://habr.com/ru/post/ar475624/


All Articles