Minicli เป็นเฟรมเวิร์กที่เรียบง่ายและไม่มีการพึ่งพาสำหรับการสร้างแอปพลิเคชัน PHP ที่เน้น CLI โดยให้วิธีการที่มีโครงสร้างในการจัดระเบียบคำสั่งของคุณ เช่นเดียวกับตัวช่วยต่างๆ เพื่ออำนวยความสะดวกในการทำงานกับอาร์กิวเมนต์คำสั่ง การรับอินพุตจากผู้ใช้ และการพิมพ์เอาต์พุตที่เป็นสี
ลิงค์ด่วน:
การปราศจากการพึ่งพาหมายความว่าอย่างไร? หมายความว่าคุณสามารถสร้างแอปพลิเคชัน CLI PHP ที่ใช้งานได้โดยไม่ต้องมีการพึ่งพาผู้ใช้และที่ดินซ้อนกันหลายสิบรายการ แพ็คเกจ minicli/minicli
พื้นฐานมีเพียง การทดสอบ การขึ้นต่อกัน และข้อกำหนดของระบบเดียว:
หมายเหตุ: หากคุณต้องการรับข้อมูลจากผู้ใช้ จำเป็นต้องมีส่วนขยาย
readline
PHP ด้วยเช่นกัน
มันทำให้คุณมีพื้นที่มากมายในการเลือกการพึ่งพาของคุณเอง
มีสองวิธีในการเริ่มต้น หากคุณต้องการขั้นต่ำเปล่าๆ ซึ่งเราจะเรียกว่า "แอปแบบเรียบง่าย" คุณสามารถสร้างสคริปต์ PHP สคริปต์เดียวสำหรับแอปพลิเคชันทั้งหมดของคุณได้ หากคุณต้องการแอปพลิเคชันที่มีโครงสร้างมากขึ้น พร้อมด้วยคำสั่งและคำสั่งย่อย คุณควรใช้ Command Namespaces เพื่อจัดระเบียบคำสั่งของคุณให้เป็นตัวควบคุม
หากคุณเพียงต้องการตั้งค่าคำสั่งง่ายๆ สองสามคำสั่งเพื่อเรียกใช้ผ่าน minicli
สิ่งที่คุณต้องทำคือสร้าง App
และลงทะเบียนคำสั่งของคุณเป็นฟังก์ชันที่ไม่ระบุชื่อ
composer require minicli/minicli
- สิ่งนี้จะสร้างไฟล์ composer.json
ใหม่minicli
ด้วยเนื้อหาต่อไปนี้: #!/usr/bin/env php
<?php
if ( php_sapi_name () !== ' cli ' ) {
exit ;
}
require __DIR__ . ' /vendor/autoload.php ' ;
use Minicli App ;
use Minicli Command CommandCall ;
$ app = new App ();
$ app -> setSignature ( ' ./minicli mycommand ' );
$ app -> registerCommand ( ' mycommand ' , function ( CommandCall $ input ) {
echo " My Command! " ;
var_dump ( $ input );
});
$ app -> runCommand ( $ argv );
จากนั้นทำให้สามารถเรียกใช้งานได้และรัน minicli
ด้วยคำสั่งของคุณ:
chmod +x minicli
./minicli mycommand
สำหรับแอปพลิเคชันที่มีโครงสร้างมากขึ้นโดยใช้ตัวควบคุมและบริการ ควรใช้ Command Namespaces พื้นที่เก็บข้อมูลเทมเพลตแอปพลิเคชันของเราเป็นจุดเริ่มต้น/เทมเพลตที่ดีในการตั้งค่า Minicli ในลักษณะนั้น
หากต้องการสร้างโปรเจ็กต์ใหม่โดยใช้เทมเพลต minicli/application
ให้รัน:
composer create-project --prefer-dist minicli/application myapp
สิ่งนี้จะสร้างโครงสร้างไดเร็กทอรีดังต่อไปนี้:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
แต่ละไดเร็กทอรีภายใน app/Command
แสดงถึง Command Namespace คลาสภายใน app/Command/Help
แสดงถึงคำสั่งย่อยที่คุณสามารถเข้าถึงได้ผ่านคำสั่ง help
หลัก
ตอนนี้คุณสามารถรันแอปพลิเคชั่นบูตสแตรปด้วย:
./minicli help
เอกสารประกอบด้วยข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับการสร้างคำสั่งและการทำงานกับเอาต์พุต
Minicli รองรับการใช้ธีมสีเพื่อเปลี่ยนสไตล์ของเอาต์พุตบรรทัดคำสั่ง ขณะนี้มี 3 ธีมในตัวนอกเหนือจากธีมเริ่มต้น:
หากต้องการตั้งค่าธีม ให้ส่งอาร์เรย์การกำหนดค่าด้วยค่า theme
เมื่อเริ่มต้นแอปในสคริปต์ ธีมที่มาพร้อมเครื่องต้องมี อักขระนำหน้า:
$ app = new App ([
' theme ' => ' Unicorn '
]);
หากต้องการใช้ธีมในตัวเริ่มต้น ไม่ต้องรวมการตั้งค่าการกำหนดค่าธีม หรือตั้งค่าเป็นสตริงว่าง
ธีมที่ผู้ใช้กำหนดสามารถสร้างและกำหนดในโปรเจ็กต์ของคุณได้ ในกรณีนี้ ให้ตั้งชื่อธีมรวมถึงเนมสเปซโดยไม่ต้องนำหน้า :
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
การตั้งค่าข้างต้นจะใช้ธีมตัวอย่างต่อไปนี้:
<?php
// File : app / Theme / BlueTheme . php
namespace App Theme ;
use Minicli Output Theme DefaultTheme ;
use Minicli Output CLIColors ;
class BlueTheme extends DefaultTheme
{
public function getThemeColors (): array
{
return [
' default ' => [ CLIColors:: $ FG_BLUE ],
' alt ' => [ CLIColors:: $ FG_BLACK , CLIColors:: $ BG_BLUE ],
' info ' => [ CLIColors:: $ FG_WHITE ],
' info_alt ' => [ CLIColors:: $ FG_WHITE , CLIColors:: $ BG_BLUE ]
];
}
}
ธีมที่ผู้ใช้กำหนดจะต้องกำหนดสไตล์ซึ่งจะแทนที่สไตล์ในธีมเริ่มต้นเท่านั้น
ยินดีเป็นอย่างยิ่ง! คุณสามารถมีส่วนร่วมด้วยรหัส เอกสาร ปัญหาในการยื่น... โปรดดูเอกสารที่มีส่วนร่วมของเรา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการมีส่วนร่วมและสิ่งที่เราคาดหวังจากคุณ
Minicli ใช้ Pest PHP เป็นเฟรมเวิร์กการทดสอบ เมื่อคุณติดตั้งการพึ่งพาทั้งหมดผ่าน composer install
แล้ว คุณสามารถรันชุดทดสอบด้วย:
./vendor/bin/pest
หากต้องการรับรายงานการครอบคลุมโค้ด คุณจะต้องติดตั้ง xdebug
จากนั้นคุณสามารถเรียกใช้:
./vendor/bin/pest --coverage
และนี่จะให้ข้อมูลโดยละเอียดเกี่ยวกับการครอบคลุมโค้ดแก่คุณ
บทช่วยสอนต่อไปนี้บน dev. เพื่อเขียนซีรีส์ชื่อ "Building Minicli" ซึ่งเราสร้าง minicli
ตั้งแต่เริ่มต้น:
หมายเหตุ: Minicli มีการพัฒนาไปมากนับตั้งแต่ซีรีส์นั้นถูกเขียนขึ้นครั้งแรก แต่นั่นเป็นรากฐานของสิ่งที่ Minicli เป็นอยู่ในปัจจุบัน