
نحن نحب 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 . تصف الوثائق أنماط الاستخدام الأساسية. لا يزال المشروع قيد التطوير ، لكن واجهة برمجة التطبيقات مستقرة بالفعل. سأكون سعيدا إذا كنت تستخدمه.
ملاحظة: لا تتردد في ترك الملاحظات والاقتراحات من خلال الإصدار على جيثب.