Rumah > pembangunan bahagian belakang > tutorial php > PHP: Menulis aplikasi baris arahan dengan MacRame. pt 1

PHP: Menulis aplikasi baris arahan dengan MacRame. pt 1

Patricia Arquette
Lepaskan: 2025-01-30 04:07:09
asal
576 orang telah melayarinya

php bukan bahasa skrip yang telah menarik banyak perhatian, tetapi ini adalah kasihan, kerana PHP mempunyai banyak cita -cita yang menjadikannya pilihan yang ideal untuk menulis aplikasi terminal.

Siri artikel ini akan memperkenalkan cara menggunakan Perpustakaan MacRame untuk menulis skrip baris perintah interaktif. Kami akan melengkapkan item sampel secara beransur -ansur. Gaya, dan jalankan fungsi di latar belakang apabila pemuat animasi dipaparkan kepada pengguna.

Untuk maklumat lanjut mengenai MacRame, lawati tapak dokumen.

Contoh item

Projek yang akan kami selesaikan adalah skrip baris arahan mudah yang digunakan untuk mengembalikan senarai pengikut pengguna Mastodon. Jalankan skrip seperti yang ditunjukkan di bawah:

dalam operasi skrip lari

php: writing command-line applications with macrame. pt 1

Pengguna memilih contoh Mastodon yang diperlukan dari menu dinamik, memasuki nama pengguna sebagai teks percuma, dan skrip memaparkan loader animasi apabila mendapatkan data. Output adalah meja gaya ASCII yang indah.

Bagi sesiapa yang ingin melangkau langkah ini, kod sumber lengkap projek ini disediakan dalam bentuk intipati.

Gambaran Keseluruhan

Dalam bahagian ini, bagaimana kita akan memperkenalkan:

Pasang MacRame

Buat skrip kosong
  • Baca parameter baris arahan
  • Buat menu dinamik
  • baca garis input pengguna (pengesahan pilihan)
  • Tetapkan gaya teks output
  • Pasang MacRame
  • Pasang MacRame:

Buat Rangka Kerja Skrip

Selepas memasang MacRame, kami boleh menyediakan skrip asas "Hello World" dan menggunakannya sebagai model permulaan kami. Walaupun secara teknikal, rangka kerja ini tidak diperlukan, tetapi gunakannya akan menjadikan skrip kami lebih selamat dan lebih standard. Mari kita lihat kod:
<code class="language-bash">composer require gbhorwood/macrame</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Walaupun tidak banyak baris kod, banyak perkara berlaku di sini. Mari kita lihat lebih dekat.

Baris ini adalah "Shebang". Pada asasnya, ia memberitahu sistem operasi Linux kami yang menjadi jurubahasa untuk menjalankan skrip ini. Ini membolehkan kita menjalankan skrip tanpa perlu menaip PHP terlebih dahulu. Shebang mesti
<code class="language-php">#!/usr/bin/env php
<?php require __DIR__ . '/vendor/autoload.php';

use Gbhorwood\Macrame\Macrame;

// 实例化 Macrame 对象。
// 参数是 ps(1) 所见的脚本名称
$macrame = new Macrame("示例 Macrame 脚本");

// 强制仅在命令行上执行脚本时才运行脚本
if ($macrame->running()) {

    // 验证主机系统是否可以运行 Macrame 脚本。失败时退出
    $macrame->preflight();

    // 将文本输出到 STDOUT
    $macrame->text("Hello World")->write();

    // 清洁退出
    $macrame->exit();
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
baris pertama fail, walaupun sebelum & lt;?

<code class="language-php">#!/usr/bin/env php</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
di sini, kami membuat objek MacRame yang akan kami gunakan di seluruh skrip. Kandungan yang sangat standard. Satu -satunya bahagian yang menarik ialah parameter. Ini adalah nama sistem operasi yang akan memberi kita skrip. Sebagai contoh, jika kita menjalankan PS untuk memaparkan senarai proses berjalan, skrip kami akan memaparkan nama ini.

Kenyataan ini memastikan bahawa semua kod dalam blok hanya dilaksanakan apabila skrip dijalankan pada baris arahan.

<code class="language-bash">composer require gbhorwood/macrame</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Apabila kita menulis PHP untuk baris arahan, kawalan kita terhadap persekitaran tidak seperti pelayan web yang kita ada dan menguruskan. Preflicht () memanggil persekitaran PHP tempatan. Keperluan minimum adalah: <:>

    php 7.4
  • POSIX EXTENSION
  • mbstring extension
  • <:> NOTA:
Walaupun MacRame berjalan pada Php 7.4 dan 8.0, kerana PHP telah berubah dalam 8.1, rentetan simbol tidak boleh diselaraskan dengan betul dalam output.

Ini akan keluar dari skrip dengan bersih dan mengembalikan kod kejayaan 0. Di samping itu, sebarang fail sementara yang dibuat semasa pelaksanaan akan dipadamkan secara automatik. Adalah lebih baik untuk menggunakan fungsi keluar () macrame dan bukannya mati () php;

Jalankan Hello World
<code class="language-php">#!/usr/bin/env php
<?php require __DIR__ . '/vendor/autoload.php';

use Gbhorwood\Macrame\Macrame;

// 实例化 Macrame 对象。
// 参数是 ps(1) 所见的脚本名称
$macrame = new Macrame("示例 Macrame 脚本");

// 强制仅在命令行上执行脚本时才运行脚本
if ($macrame->running()) {

    // 验证主机系统是否可以运行 Macrame 脚本。失败时退出
    $macrame->preflight();

    // 将文本输出到 STDOUT
    $macrame->text("Hello World")->write();

    // 清洁退出
    $macrame->exit();
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Selepas menulis skrip asas "Hello World", kita boleh menetapkan keizinannya untuk membolehkan pelaksanaan dan menjalankannya pada baris arahan.

baca parameter

MacRame menyediakan satu set alat untuk analisis dan membaca parameter baris perintah. Mari kita mulakan dengan beberapa perkara mudah: dapatkan nombor versi apabila menggunakan arahan berikut untuk memanggil skrip:

<code class="language-php">#!/usr/bin/env php</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Untuk keadaan ini, kita hanya perlu memeriksa sama ada parameter ini wujud.

kita boleh mencapai tujuan ini dengan memanggil kaedah Args () pada objek MacRame. Untuk menguji sama ada parameter wujud, kita boleh menggunakan kaedah wujud (), seperti yang ditunjukkan di bawah:

<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

ada () kaedah kembali ke boolean.

?
<code class="language-php">if ($macrame->running())</code>
Salin selepas log masuk
Salin selepas log masuk

Parameter baris arahan juga boleh digunakan untuk memberikan nilai untuk pembolehubah. Sebagai contoh, untuk menetapkan nilai nama pengguna, kami mungkin berharap pengguna boleh memanggil skrip seperti ini:

Untuk mendapatkan nilai parameter ini dalam skrip kami, kami boleh menggunakan kaedah pertama () yang disediakan oleh args (), seperti yang ditunjukkan di bawah:

seperti namanya, kaedah pertama () mengembalikan nilai
<code class="language-php">$macrame->preflight();</code>
Salin selepas log masuk
Salin selepas log masuk

pertama parameter. Sekiranya kita memanggil skrip seperti ini:

<code class="language-php">$macrame->exit();</code>
Salin selepas log masuk
Salin selepas log masuk

kemudian pertama () akan mengembalikan nilai "FirstUser". Jika kita mahu nilai terakhir, kita boleh menghubungi terakhir (). Jika kita mahu semua sebagai array, kita akan menggunakan semua ().

<code class="language-bash">chmod 755 ./examplescript.php
./examplescript.php</code>
Salin selepas log masuk
meletakkan semua ini bersama -sama, skrip kami kelihatan seperti ini sekarang:

Senarai kaedah penuh Parameter baris arahan pengendalian diperkenalkan dalam dokumen parameter MacRame.

Buat menu dinamik

<code class="language-bash">./examplescript.php --version
# 或
./examplescript.php -v</code>
Salin selepas log masuk
kami juga berharap untuk membolehkan pengguna menggunakan skrip kami secara interaktif. Jika mereka tidak lulus parameter pada baris arahan, kami akan meminta mereka memasukkan data. Untuk contoh Mastodon, kami akan menggunakan menu ini.

menu macrame adalah dinamik;

mari kita tulis fungsi yang memaparkan menu kepada pengguna dan mengembalikan nilai nilai yang dipilih:

<code class="language-bash">composer require gbhorwood/macrame</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fungsi teras di sini adalah untuk memanggil yang berikut:

<code class="language-php">#!/usr/bin/env php
<?php require __DIR__ . '/vendor/autoload.php';

use Gbhorwood\Macrame\Macrame;

// 实例化 Macrame 对象。
// 参数是 ps(1) 所见的脚本名称
$macrame = new Macrame("示例 Macrame 脚本");

// 强制仅在命令行上执行脚本时才运行脚本
if ($macrame->running()) {

    // 验证主机系统是否可以运行 Macrame 脚本。失败时退出
    $macrame->preflight();

    // 将文本输出到 STDOUT
    $macrame->text("Hello World")->write();

    // 清洁退出
    $macrame->exit();
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kami menyediakan array rentetan sebagai pilihan menu, dan teks tajuk menu pilihan untuk menu ()-& gt; Pilihan pengguna akan dikembalikan sebagai rentetan.

Dengan menambah untuk memadam () ke rantai kami, anda juga boleh memilih untuk memadamkan menu dari skrin selepas pengguna membuat pilihan. Kaedah ini adalah pilihan, tetapi ia sememangnya boleh kemas.

Selepas mendapatkan fungsi menu, kita boleh mengubah cara untuk mendapatkan contoh Mastodon. Kami akan cuba membacanya dari parameter baris arahan.

<code class="language-php">#!/usr/bin/env php</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Penerangan Tambahan Gaya Menu

Secara lalai, MacRame menggunakan gaya lalai dan warna terminal untuk memaparkan menu, dan projek yang menyoroti paparan yang dipaparkan ditetapkan untuk paparan terbalik. Jika perlu, kita boleh mengubah tetapan ini dengan menambahkan beberapa fungsi tambahan ke rantai kami. Sebagai contoh, jika kita mahu menyerlahkan item yang dipaparkan yang dipaparkan sebagai teks merah tebal, kita boleh menulis ini:

<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Halaman dokumen menu Gambaran keseluruhan lengkap semua kaedah yang boleh digunakan untuk menyesuaikan warna, gaya dan penjajaran menu adat.

baca barisan pengguna untuk masukkan

Seterusnya, kami akan mengubah cara untuk mendapatkan nama pengguna supaya ia juga akan menerima input interaktif. Dalam kes ini, kami akan menggunakan input ()-& gt; Berikut adalah fungsi:

<code class="language-php">if ($macrame->running())</code>
Salin selepas log masuk
Salin selepas log masuk
Baris terakhir fungsi ini adalah di mana kita bertanya dengan pengguna. Kaedah ReadLine () menerima Parameter Prompt $ Pilihan; Nilai pulangan adalah rentetan yang dimasukkan oleh pengguna.

Penerangan Tambahan Pengesahan Input

Pengguna akan membuat kesilapan. Inilah sebabnya pengesahan input adalah penting.

MacRame dilengkapi dengan banyak kaedah pratetap untuk mengesahkan input. Kami boleh menambah sebilangan pengesahan ke rantai kami. Input ()-& gt;

mari kita lihat contoh:

<code class="language-php">$macrame->preflight();</code>
Salin selepas log masuk
Salin selepas log masuk
di sini, kami menggunakan dua ujian pengesahan: Teks mestilah empat atau lebih aksara, dan tidak boleh memasukkan simbol "@". Untuk kedua -dua kaedah pengesahan ini, parameter kedua adalah mesej ralat yang akan kami paparkan kepada pengguna jika pengesahan gagal.

Halaman Dokumen Input MacRame menyediakan senarai lengkap semua fungsi pengesahan pra -konstruktif. Jika kita mahu menulis peranti pengesahan tersuai kita sendiri, ia juga diperkenalkan di dalamnya.

Bagaimana dengan output "paparan belakang seperti titik"?

Jika pengguna kami memasuki data sensitif, seperti kata laluan, kami mungkin tidak mahu menunjukkan kunci mereka kembali ke terminal untuk mengelakkan dilihat oleh spymen.

Untuk menyelesaikan masalah ini, MacRame menyediakan versi "paparan belakang berbentuk titik" bacaan (), yang dipanggil ReadPassword ().

<code class="language-php">$macrame->exit();</code>
Salin selepas log masuk
Salin selepas log masuk
ReadPassword () Setiap butang dibaca akan diturunkan dalam bentuk nombor bintang.

tetapkan gaya teks

Dalam contoh cara membaca garis teks pengguna, kami telah melihat sejumlah besar kod yang digunakan untuk menetapkan gaya teks segera. Mari kita pelajari secara terperinci.

MacRame membolehkan penggunaan kod ANSI untuk menetapkan gaya output teks terminal, yang membolehkan kita menggunakan gaya dan warna badan tebal dan badan serong ke teks kami.

Kami boleh melakukan operasi ini dalam skrip kami melalui dua cara. Terdapat beberapa cara, seperti gaya () dan warna () (atau warna ()), atau kita boleh menggunakan sistem tanda teks asas.

mari kita lihat kaedah pertama.

<code class="language-bash">composer require gbhorwood/macrame</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

di sini, kami menggunakan kaedah Teks () MacRame untuk membuat objek "teks", kemudian gunakan gaya dan warna, dan akhirnya gunakan GET () untuk mengembalikannya sebagai rentetan.

Sila ambil perhatian bahawa kaedah gaya dan warna digunakan untuk semua teks dalam rentetan. Jika kita mahu mencampurkan gaya dan teks warna dengan teks tulen, kita perlu membuat banyak sub -string dan menyambungkannya bersama -sama. Ini mungkin sangat menyusahkan, terutamanya apabila berurusan dengan sejumlah besar teks.

atau, kita boleh menggunakan sistem markup MacRame untuk memudahkan tetapan gaya teks. Ini adalah contoh:

<code class="language-php">#!/usr/bin/env php
<?php require __DIR__ . '/vendor/autoload.php';

use Gbhorwood\Macrame\Macrame;

// 实例化 Macrame 对象。
// 参数是 ps(1) 所见的脚本名称
$macrame = new Macrame("示例 Macrame 脚本");

// 强制仅在命令行上执行脚本时才运行脚本
if ($macrame->running()) {

    // 验证主机系统是否可以运行 Macrame 脚本。失败时退出
    $macrame->preflight();

    // 将文本输出到 STDOUT
    $macrame->text("Hello World")->write();

    // 清洁退出
    $macrame->exit();
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Teks antara dan

tanda akan menebal (tentu saja). Dokumen ini menyenaraikan senarai lengkap semua tanda. Satu perkara yang perlu diperhatikan ialah tanda akan mematikan semua tanda sebelumnya. Ini disebabkan oleh tingkah laku kod pemindahan ANSI.

Ini bermakna tanda bersarang tidak akan berfungsi seperti yang kita harapkan. Sebagai contoh, dalam contoh ini, tanda pertama akan ditutup

dan

tanda:

skrip semasa
<code class="language-php">#!/usr/bin/env php</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setakat ini, skrip contoh kami ditunjukkan di bawah:

apakah yang seterusnya
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setakat ini, kami telah memperkenalkan parameter baris arahan membaca, mendapatkan input pengguna dari menu dan teks, dan membuat beberapa gaya teks asas untuk output. Dalam artikel seterusnya, kami akan memperkenalkan:

jalankan fungsi di latar belakang apabila pemuat animasi dipaparkan kepada pengguna
  • tulis fail dengan selamat
  • output data array sebagai output format yang baik
  • paparan paparan output panjang
  • output tahap pemberitahuan asas
?

Atas ialah kandungan terperinci PHP: Menulis aplikasi baris arahan dengan MacRame. pt 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan