เครื่องมือที่จะทำให้การทำงานกับ Symfony Console ยอดเยี่ยมยิ่งขึ้น
แพ็คเกจนี้มีอยู่ใน Packagist:
composer require efrane/console-additionsBatchคลาสนี้เสนอคำสั่งแบทช์ของแอปพลิเคชันคอนโซล Symfony สิ่งนี้มีประโยชน์เมื่อเขียนสิ่งต่าง ๆ เช่น สคริปต์ปรับใช้หรืออัปเดตเป็นคำสั่งคอนโซลซึ่งเรียกคำสั่งอื่น ๆ มากมายตามลำดับที่กำหนด เช่น การอัปเดตแคช การย้ายฐานข้อมูล ฯลฯ
การใช้งานใน Command::execute :
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();คำสั่งเชลล์
แบตช์อาจเป็นชุดของคอนโซลแอปพลิเคชันและคำสั่งเชลล์ระบบที่เกี่ยวพันกัน นี่เป็นคุณสมบัติขั้นสูงที่ต้องใช้แพ็คเกจ symfony/process เป็นการพึ่งพาเพิ่มเติม
เนื่องจากคำสั่งเชลล์สร้างอ็อบเจ็กต์ Process ภายใน Batch API จึงเปิดเผยวิธีการเพิ่มคำสั่งเชลล์:
addShell เพิ่มกระบวนการด้วยการกำหนดค่าที่กำหนด (ดูรายละเอียดที่ Batch::addShell)addShellCb(string $cmd, callable $cb) สร้างกระบวนการและส่งผ่านไปยังการโทรกลับเพื่อกำหนดค่าเพิ่มเติม สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคำสั่งที่ต้องการต้องการกระบวนการไพพ์บางประเภทการปิดเสียงข้อผิดพลาด
เป็นไปได้ที่จะรันชุดคำสั่งโดยไม่มีข้อยกเว้น
แพ็คเกจนี้มีอินเทอร์เฟซเอาต์พุตคอนโซลเพิ่มเติม:
FileOutputFileOutputs เขียนข้อมูลทั้งหมดลงในสตรีมไฟล์และมีรูปแบบที่เป็นรูปธรรม:
NativeFileOutput ใช้ฟังก์ชันการสตรีมไฟล์ PHP แบบเนทีฟ จึงเป็นตัวเลือกที่ดีสำหรับปลายทางในพื้นที่ และการกำหนดค่าโปรโตคอลการสตรีม PHP ของเซิร์ฟเวอร์ของคุณ อาจเพียงพอสำหรับปลายทางระยะไกลด้วยซ้ำ
ในทางกลับกัน FlysystemFileOutput จะส่งข้อมูลสตรีมไปยัง league/flysystem -Adapter จึงสามารถส่งข้อมูลนั้นไปยังปลายทางที่รองรับ Flysystem เช่น S3, Dropbox, FTP เป็นต้น
MultiplexedOutputMultiplexedOutput สามารถใช้เพื่อรวมอินเทอร์เฟซเอาต์พุตหลายรายการเพื่อทำหน้าที่เป็นหนึ่งเดียว นี่เป็นส่วนร่วมทางลอจิคัลของเอาต์พุตไฟล์ เนื่องจากโดยปกติแล้วใครคนหนึ่งอาจต้องการส่งเอาต์พุตไปยังคอนโซลของผู้ใช้และปลายทางอื่น การตั้งค่าภายในแบบง่ายๆ อาจมีลักษณะดังนี้:
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
}
}