PHP-CLI เป็นไลบรารีง่ายๆที่ช่วยในการสร้างสคริปต์บรรทัดคำสั่งที่ดูดี
ต้องดูแล
มันมีน้ำหนักเบาและ ไม่มีการพึ่งพาบุคคลที่สาม หมายเหตุ: นี่คือสคริปต์ที่ไม่โต้ตอบเท่านั้น มันไม่มีการสนับสนุนหรือการสนับสนุนที่คล้ายกัน
ใช้นักแต่งเพลง:
php composer.phar require splitbrain/php-cli
ตัวอย่างน้อยที่สุด:
#!/usr/bin/php
<?php
require __DIR__ . ' /../vendor/autoload.php ' ;
use splitbrain phpcli CLI ;
use splitbrain phpcli Options ;
class Minimal extends CLI
{
// register options and arguments
protected function setup ( Options $ options )
{
$ options -> setHelp ( ' A very minimal example that does nothing but print a version ' );
$ options -> registerOption ( ' version ' , ' print version ' , ' v ' );
}
// implement your code
protected function main ( Options $ options )
{
if ( $ options -> getOpt ( ' version ' )) {
$ this -> info ( ' 1.0.0 ' );
} else {
echo $ options -> help ();
}
}
}
// execute it
$ cli = new Minimal ();
$ cli -> run ();
การใช้งานขั้นพื้นฐานนั้นง่าย:
extend splitbrainphpcliCLIsetup($options) และตัวเลือกการลงทะเบียนอาร์กิวเมนต์คำสั่งและตั้งค่าข้อความช่วยเหลือ$options->setHelp() เพิ่มคำอธิบายทั่วไป$options->registerOption() เพิ่มตัวเลือก$options->registerArgument() เพิ่มอาร์กิวเมนต์$options->registerCommand() เพิ่มคำสั่งย่อยmain($options) และทำตรรกะทางธุรกิจของคุณที่นั่น$options->getOpts ให้คุณเข้าถึงตัวเลือกชุด$options->getArgs() ส่งคืนอาร์กิวเมนต์ที่เหลือหลังจากลบตัวเลือก$options->getCmd() ส่งคืนคำสั่งย่อยที่ผู้ใช้ใช้run()ตัวอย่างเพิ่มเติมสามารถพบได้ในไดเรกทอรีตัวอย่าง โปรดดูเอกสาร API สำหรับข้อมูลเพิ่มเติม
โดยค่าเริ่มต้นคลาส CLI จะลงทะเบียนตัวจัดการข้อยกเว้นและจะพิมพ์ข้อความของข้อยกเว้นไปยังผู้ใช้ปลายทางและออกจากโปรแกรมด้วยรหัสออกที่ไม่ใช่ศูนย์ คุณสามารถปิดการใช้งานพฤติกรรมนี้และจับข้อยกเว้นทั้งหมดด้วยตัวเองโดยส่งเท็จไปยังตัวสร้าง
คุณสามารถใช้ splitbrainphpcliException เพื่อส่งสัญญาณปัญหาใด ๆ ภายในรหัสหลักของคุณด้วยตัวคุณเอง รหัสของข้อยกเว้นจะถูกใช้เป็นรหัสออกแล้ว
StackTraces จะถูกพิมพ์บน debug ระดับบันทึก
เอาต์พุตสีถูกจัดการผ่านคลาส Colors มันพยายามตรวจสอบว่ามีเทอร์มินัลสีและใช้สีเทอร์มินัลเท่านั้น คุณสามารถระงับเอาต์พุตสีได้ตลอดเวลา --no-colors ลงในสคริปต์ของคุณ การปิดใช้งานสีจะปิดการใช้งานคำนำหน้าอิโมติคอน
คุณสามารถพิมพ์ข้อความบันทึกสีที่เรียบง่ายโดยใช้ success() (สีเขียว), info() (สีฟ้า), error() (สีแดง) หรือ fatal() (สีแดง) หลังจะออกจากโปรแกรมด้วยรหัสทางออกที่ไม่เป็นศูนย์
สำหรับการระบายสีที่ซับซ้อนมากขึ้นคุณสามารถเข้าถึงคลาสสีผ่าน $this->colors ในสคริปต์ของคุณ วิธี wrap() อาจเป็นสิ่งที่คุณต้องการใช้
รูปแบบตารางอนุญาตให้ระบายสีคอลัมน์เต็ม หากต้องการใช้กลไกนั้นผ่านอาร์เรย์ของสีเป็นพารามิเตอร์ที่สามไปยังวิธี format() โปรดทราบว่าคุณไม่สามารถส่งข้อความสีในพารามิเตอร์ที่สอง (การคำนวณความยาวข้อความและการห่อจะล้มเหลวทำลายข้อความของคุณ)
คลาส TableFormatter อนุญาตให้คุณจัดเรียงข้อความในหลายคอลัมน์ มันพยายามที่จะหาความกว้างของเทอร์มินัลที่มีอยู่ด้วยตัวเอง มันสามารถเขียนทับได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม COLUMNS
รูปแบบถูกใช้ผ่านวิธีการ format() ซึ่งคาดว่าอย่างน้อยสองอาร์เรย์: ครั้งแรกกำหนดความกว้างของคอลัมน์ที่สองมีข้อความที่จะเติมลงในคอลัมน์ ระหว่างแต่ละคอลัมน์จะพิมพ์เส้นขอบ (พื้นที่เดียวโดยค่าเริ่มต้น)
ดู example/table.php สำหรับการใช้งานตัวอย่าง
ความกว้างของคอลัมน์สามารถกำหนดได้ในสามรูปแบบ:
15 )25% )* )เมื่อผสมความกว้างคงที่และเปอร์เซ็นต์เปอร์เซ็นต์อ้างถึงพื้นที่ที่เหลือหลังจากคอลัมน์คงที่ทั้งหมดได้รับการกำหนด
พื้นที่สำหรับเส้นขอบจะถูกคำนวณโดยอัตโนมัติ ขอแนะนำให้มีคอลัมน์สัมพัทธ์ (เปอร์เซ็นต์) หรือคอลัมน์ของเหลวเพื่อปรับสำหรับความกว้างเทอร์มินัลที่แตกต่างกัน
รูปแบบตารางใช้สำหรับหน้าจอความช่วยเหลืออัตโนมัติที่สามารถเข้าถึงได้เมื่อเรียกสคริปต์ของคุณด้วย -h หรือ --help
คลาส CLI เป็นเครื่องบันทึกที่เข้ากันได้กับ PSR-3 อย่างสมบูรณ์ (การพิมพ์ข้อมูลบันทึกสีไปยัง Stdout และ Stderr) สิ่งนี้มีประโยชน์เมื่อคุณเรียกรหัสแบ็กเอนด์จาก CLI ของคุณซึ่งคาดว่าอินสแตนซ์ของ Logger จะสร้างเอาต์พุตสถานะที่เหมาะสมขณะทำงาน
หากคุณต้องการผ่านคลาสที่ใช้ PsrLogLoggerInterface คุณสามารถทำได้โดยการสืบทอดจากหนึ่งในสองคลาสที่ให้มาใช้กับอินเทอร์เฟซนี้แทนที่จะเป็น splitbrainphpcliCLI
splitbrainphpcliPSR3CLI หากคุณใช้เวอร์ชัน 2 ของ PSR3 (PHP <8.0)splitbrainphpcliPSR3CLIv3 หากคุณใช้เวอร์ชัน 3 ของ PSR3 (PHP> = 8.0) วัตถุที่ได้จากนั้นสามารถส่งผ่านเป็นอินสแตนซ์ Logger ความแตกต่างระหว่างทั้งสองอยู่ในลายเซ็นวิธีการปรับ (ที่มีคำใบ้ประเภทที่เหมาะสม) เท่านั้น ตรวจสอบให้แน่ใจว่าคุณติดตั้งแพ็คเกจ psr/log Composer ที่แนะนำเมื่อใช้คลาสเหล่านี้
หมายเหตุ: หากรหัสแบ็กเอนด์ของคุณเรียกใช้สำหรับตัวบันทึก PSR-3 แต่ไม่ได้พิมพ์การตรวจสอบสำหรับอินเทอร์เฟซ (aka เป็น loggeraware เท่านั้น) คุณสามารถผ่านอินสแตนซ์ของ splitbrainphpcliCLI
คุณสามารถปรับคำสั่งของเครื่องมือ CLI ของคุณโดยใช้พารามิเตอร์ --loglevel Loglevels ที่รองรับคือ PSR-3 Loglevels และระดับ success ของเราเอง:

วิธีการสะดวกสบายสำหรับทุกระดับบันทึกมีอยู่ การแก้ไขสถานที่ที่อธิบายไว้ใน PSR-3 ก็มีอยู่เช่นกัน ข้อความจากระดับ warning เป็นต้นไปจะถูกพิมพ์ไปยัง STDERR ด้านล่างทั้งหมดจะถูกพิมพ์ไปยัง STDOUT
ระดับบันทึกเริ่มต้นของสคริปต์ของคุณสามารถตั้งค่าได้โดยการเขียนทับสมาชิก $logdefault
ดู example/logging.php สำหรับตัวอย่าง