Minicli adalah kerangka kerja minimalis dan bebas ketergantungan untuk membangun aplikasi PHP yang berpusat pada CLI. Ini menyediakan cara terstruktur untuk mengatur perintah Anda, serta berbagai pembantu untuk memfasilitasi bekerja dengan argumen perintah, mendapatkan masukan dari pengguna, dan mencetak keluaran berwarna.
Tautan cepat:
Apa yang dimaksud dengan bebas ketergantungan? Artinya, Anda dapat membangun aplikasi CLI PHP yang berfungsi tanpa banyak ketergantungan pada lahan pengguna. Paket minicli/minicli
dasar hanya memiliki dependensi pengujian , dan satu persyaratan sistem:
Catatan: Jika Anda ingin mendapatkan input pengguna, maka ekstensi
readline
PHP juga diperlukan.
Ini memberi Anda banyak ruang untuk memilih dependensi Anda sendiri.
Ada dua cara untuk memulai. Jika Anda menginginkan yang minimal, yang kami sebut "Aplikasi Minimalis", Anda dapat membuat satu skrip PHP dengan keseluruhan aplikasi Anda. Jika Anda menginginkan aplikasi yang lebih terstruktur, dengan perintah dan subperintah, maka Anda harus menggunakan Ruang Nama Perintah untuk mengatur perintah Anda ke dalam Pengontrol.
Jika Anda hanya ingin menyiapkan beberapa perintah sederhana untuk dijalankan minicli
, yang perlu Anda lakukan hanyalah membuat App
dan mendaftarkan perintah Anda sebagai fungsi anonim.
composer require minicli/minicli
- ini akan menghasilkan file composer.json
baru.minicli
dengan konten berikut: #!/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 );
Kemudian, buat itu dapat dieksekusi dan jalankan minicli
dengan perintah Anda:
chmod +x minicli
./minicli mycommand
Untuk aplikasi yang lebih terstruktur menggunakan Pengontrol dan Layanan, sebaiknya gunakan Command Namespaces. Repositori templat aplikasi kami adalah titik awal/templat yang bagus untuk menyiapkan Minicli seperti itu.
Untuk membuat proyek baru menggunakan minicli/application
, jalankan:
composer create-project --prefer-dist minicli/application myapp
Ini akan menghasilkan struktur direktori seperti berikut:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
Setiap direktori di dalam app/Command
mewakili Command Namespace. Kelas di dalam app/Command/Help
mewakili subperintah yang dapat Anda akses melalui perintah help
utama.
Anda sekarang dapat menjalankan aplikasi bootstrap dengan:
./minicli help
Dokumentasi berisi informasi lebih rinci tentang membuat perintah dan bekerja dengan output.
Minicli mendukung penggunaan tema warna untuk mengubah gaya keluaran baris perintah. Saat ini terdapat 3 tema bawaan selain tema default:
Untuk mengatur tema, masukkan array konfigurasi dengan nilai theme
saat menginisialisasi Aplikasi dalam skrip. Tema bawaan memerlukan karakter utama:
$ app = new App ([
' theme ' => ' Unicorn '
]);
Untuk menggunakan tema bawaan bawaan, jangan sertakan pengaturan konfigurasi tema, atau setel ke string kosong.
Tema yang ditentukan pengguna juga dapat dibuat dan ditentukan dalam proyek Anda. Dalam hal ini, tetapkan nama tema termasuk namespacenya tanpa awalan :
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
Pengaturan di atas akan menggunakan contoh tema berikut:
<?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 ]
];
}
}
Tema yang ditentukan pengguna hanya perlu menentukan gaya yang akan menggantikan gaya yang ada di tema default.
Kontribusi sangat diharapkan! Anda dapat berkontribusi dengan kode, dokumentasi, masalah pengarsipan... Silakan merujuk ke dokumen kontribusi kami untuk informasi lebih lanjut tentang proses kontribusi dan apa yang kami harapkan dari Anda.
Minicli menggunakan Pest PHP sebagai kerangka pengujian. Setelah Anda menginstal semua dependensi melalui composer install
, Anda dapat menjalankan test suite dengan:
./vendor/bin/pest
Untuk mendapatkan laporan cakupan kode, Anda harus menginstal xdebug
. Kemudian, Anda dapat menjalankan:
./vendor/bin/pest --coverage
Dan ini akan memberi Anda informasi rinci tentang cakupan kode.
Berikut tutorial dev.to membuat seri bernama "Membangun Minicli", dimana kita membuat minicli
dari awal:
Catatan: Minicli telah banyak berkembang sejak seri tersebut pertama kali ditulis, tetapi itulah dasar dari Minicli saat ini.