أدوات تجعل العمل مع Symfony Console أكثر روعة.
هذه الحزمة متاحة على Packagist:
composer require efrane/console-additions
Batch
يقدم هذا الفصل أوامر مجمعة لتطبيق Symfony Console. يمكن أن يكون هذا مفيدًا عند كتابة أشياء مثل النشر أو تحديث البرامج النصية كأوامر وحدة تحكم والتي تستدعي العديد من الأوامر الأخرى بترتيب محدد، على سبيل المثال تحديث ذاكرة التخزين المؤقت، وترحيل قاعدة البيانات، وما إلى ذلك.
الاستخدام في Command::execute
:
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();
أوامر شل
يمكن أن تكون الدُفعات عبارة عن مجموعة متشابكة من تطبيقات وحدة التحكم وأوامر shell الخاصة بالنظام. هذه ميزة متقدمة تتطلب حزمة symfony/process
كتبعية إضافية.
نظرًا لأن أوامر shell تنشئ كائنات Process
داخليًا، فإن Batch
API تعرض طرقًا لإضافة أمر shell:
addShell
العملية بالتكوين المحدد (راجع Batch::addShell للحصول على التفاصيل)addShellCb(string $cmd, callable $cb)
ينشئ العملية ويمررها إلى رد اتصال لمزيد من التكوين. يكون هذا مفيدًا بشكل خاص عندما يتطلب الأمر المطلوب نوعًا ما من أنابيب العملية.أخطاء الصمت
من الممكن تشغيل مجموعة من الأوامر دون طرح استثناءات.
توفر هذه الحزمة واجهات إخراج وحدة التحكم الإضافية:
FileOutput
تقوم FileOutputs بكتابة جميع بياناتها في دفق ملف وتأتي في نكهات ملموسة:
يستخدم NativeFileOutput
وظائف دفق ملفات PHP الأصلية، وبالتالي فهو خيار جيد للوجهات المحلية، واعتمادًا على تكوين بروتوكولات دفق PHP لخادمك، فقد يكون كافيًا للوجهات البعيدة.
من ناحية أخرى، يقوم FlysystemFileOutput
بتمرير بيانات الدفق إلى league/flysystem
-Adapter، وبالتالي يكون قادرًا على إرسال تلك البيانات إلى أي وجهة يدعمها Flysystem، مثل S3، وDropbox، وFTP، وما إلى ذلك.
MultiplexedOutput
يمكن استخدام MultiplexedOutput لدمج واجهات إخراج متعددة لتكون بمثابة واجهة واحدة. هذا هو الرفيق المنطقي لمخرجات الملف حيث قد يرغب المرء عادةً في إرسال المخرجات إلى وحدة تحكم المستخدم وبعض الوجهات الأخرى. قد يبدو الإعداد البسيط بالداخل كما يلي:
class Command extends Symfony Component Console Command {
public function execute ( InputInterface $ input , OutputInterface $ output ) {
// send output to multiple destinations
$ output = new EFrane ConsoleAdditions Output MultiplexedOutput ([
$ output ,
new EFrane ConsoleAdditions Output NativeFileOutput ( ' command.log ' )
]);
// normal console command
}
}