如果你是一名Web
開發工程師,那麼你一定使用PHP
開發過很多Web
應用程式。但是你知道如何使用PHP
快速建立一個命令列應用程式(工具)嗎?下面我將向您展示如何使用PHP
和一個著名的Composer
擴充包--Symphony/Console建立一個命令列應用程式。
Symphony/Console是一個使用Composer
管理的PHP
擴充包,它簡化了創建一個漂亮的、可測試的PHP
#命令行應用的過程,它提供了開箱即用的諸如(可選/必選的)參數規範和選項規範(使用-
符號)等功能。那麼,我們來一起開始建立我們的應用。
按照慣例,我們將建立一個「Hello World」的控制台應用程序,但是要稍微修改一下它,讓它支持自定義問候語(代替Hello),並且可以隨意的去問候一個人(代替world)。
這個Hello World應用程式將會有以下功能:
為我們提供一個單獨的
greet
(問候)指令,我們將使用它來與應用程式互動。greet
可以接受一個可選的參數(name
)來列印一個被問候的人(預設是World)。greet
可以接受一個選項(--say
)來更改問候語(預設是Hello)。如果我們麼樣給定參數或選項,程式將預設輸出一個
Hello World
訊息。
如何使用PHP建置命令列應用程式
-
#為我們的專案建立新的目錄並
cd
#進入它:mkdir hello-world-app && cd hello-world-app
-
使用Composer將控制台元件引入我們專案
composer require symfony/console
-
然後為你的應用程式建立一個入口點,PHP擴充不是必需的,因為我們要使這個文件成為可執行文件,並在文件本身中指定環境。
touch HelloWorld chmod +X HelloWorld
-
將下面的程式碼加入
HelloWorld
檔案中(後面我將為每一行做註解),並在你的終端機中執行HelloWorld
這個應用程式.#!/usr/bin/env php <?php require __DIR__.'/vendor/autoload.php'; use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; (new Application('Hello World', '1.0.0')) ->register('greet') ->addArgument('name', InputArgument::OPTIONAL, 'Name of the person') ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting') ->setCode(function (InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $greeting = $input->getOption('say'); if (!empty($name) && !empty($greeting)) { return $output->writeln("<info>$greeting $name!</info>"); } else if (!empty($name)) { return $output->writeln("<info>Hello $name!</info>"); } else if (!empty($greeting)) { return $output->writeln("<info>$greeting World!</info>"); } else { return $output->writeln("<info>Hello World!</info>"); } }) ->getApplication() ->run();
看,就這樣,你擁有了自己的HelloWorld
控制台程式
當沒有指定指令時,HelloWorld預設輸出一螢幕訊息提示
Symfony Console
元件給我們提供的應用程式有幾個開箱可用的選項的和指令,例如help
,list
和--version
#解釋這個神奇的文件內容
OK,讓我們來看看我們的HelloWorld
檔案中的程式碼。
我們引入
autoload.php
以使用由composer
提供的自動載入以及控制台元件提供的各功能。
InputInterface
和OutputInterface
將使應用程式的輸入和輸出功能變得簡單,InputArgument
和InputOption
將幫助我們處理傳遞給我們HelloWorld應用程式的選項和參數。
require __DIR__.'/vendor/autoload.php'; use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface;
-
symphony/console
透過名稱實例化一個新的應用程式HelloWorld (v1.0.0)
,並註冊我們的greet
命令。(new Application('Hello World', '1.0.0')) ->register('greet')
-
我們加入一個可選的
name
參數(addArgument()
),並提供參數的簡短描述。然後,我們使用這個addOption()
方法加入一個say
選項。請注意,選項始終是可選的,但您可以指定要傳遞的值,也可以僅將其用作指boolean標識。->addArgument('name', InputArgument::OPTIONAL, 'Name of the person') ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting')
-
setCode()
方法中的程式碼會包含我們應用程式的主邏輯,它會根據傳遞的參數和選項列印一個問候語到終端。我們監聽$input
對象,使用getArgument()
和getOption()
輔助方法取得傳遞給greet
的選項和參數,然後,我們只需要檢查傳遞了哪些參數或選項,並相應的(使用$output
物件)向控制台輸出列印問候語。這個writeln()
方法可以根據標籤格式化文本,例如輸出不同顏色的info
,error
和warning
。->setCode(function (InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $greeting = $input->getOption('say'); if (!empty($name) && !empty($greeting)) { return $output->writeln("<info>$greeting $name!</info>"); } else if (!empty($name)) { return $output->writeln("<info>Hello $name!</info>"); } else if (!empty($greeting)) { return $output->writeln("<info>$greeting World!</info>"); } else { return $output->writeln("<info>Hello World!</info>"); } })
-
最後我們引導應用程式
並呼叫他的
方法,以便他隨時做好接收和處理greet
命令。->getApplication() ->run();
現在讓我們在實例中看看我們HelloWorld程式
greet
不傳遞任何參數和選項
greet
有一個可選的name
參數
greet
使用say
選項自訂問候語
最後,
greet
自訂問候語和問候人
關於作者
程式開發人員,不拘泥於語言與技術,目前主要從事PHP和前端開發,使用Laravel和VueJs。合適和夠用是永不停息的追求。個人網站:https://www.linganmin.cn
譯者註:本文中的部分連結和圖片地址已更換為國內地址,如有翻譯錯誤請多指正。
Happy Coding!
原文位址:How to build a Command Line Application using PHP?
如果你是Web
開發工程師,那麼你一定使用PHP
開發過很多Web
應用程式。但是你知道如何使用PHP
快速建立一個命令列應用程式(工具)嗎?下面我將向您展示如何使用PHP
和一個著名的Composer
擴充包--Symphony/Console建立一個命令列應用程式。
Symphony/Console是一個使用Composer
管理的PHP
擴充包,它簡化了創建一個漂亮的、可測試的PHP
#命令行應用的過程,它提供了開箱即用的諸如(可選/必選的)參數規範和選項規範(使用-
符號)等功能。那麼,我們來一起開始建立我們的應用。
按照慣例,我們將建立一個「Hello World」的控制台應用程序,但是要稍微修改一下它,讓它支持自定義問候語(代替Hello),並且可以隨意的去問候一個人(代替world)。
這個Hello World應用程式將會有以下功能:
為我們提供一個單獨的
greet
(問候)指令,我們將使用它來與應用程式互動。greet
可以接受一個可選的參數(name
)來列印一個被問候的人(預設是World)。greet
可以接受一個選項(--say
)來更改問候語(預設是Hello)。如果我們麼樣給定參數或選項,程式將預設輸出一個
Hello World
訊息。
如何使用PHP建置命令列應用程式
-
#為我們的專案建立新的目錄並
cd
#進入它:mkdir hello-world-app && cd hello-world-app
-
使用Composer將控制台元件引入我們專案
composer require symfony/console
-
然後為你的應用程式建立一個入口點,PHP擴充不是必需的,因為我們要使這個文件成為可執行文件,並在文件本身中指定環境。
touch HelloWorld chmod +X HelloWorld
-
將下面的程式碼加入
HelloWorld
檔案中(後面我將為每一行做註解),並在你的終端機中執行HelloWorld
這個應用程式.#!/usr/bin/env php <?php require __DIR__.'/vendor/autoload.php'; use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; (new Application('Hello World', '1.0.0')) ->register('greet') ->addArgument('name', InputArgument::OPTIONAL, 'Name of the person') ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting') ->setCode(function (InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $greeting = $input->getOption('say'); if (!empty($name) && !empty($greeting)) { return $output->writeln("<info>$greeting $name!</info>"); } else if (!empty($name)) { return $output->writeln("<info>Hello $name!</info>"); } else if (!empty($greeting)) { return $output->writeln("<info>$greeting World!</info>"); } else { return $output->writeln("<info>Hello World!</info>"); } }) ->getApplication() ->run();
看,就這樣,你擁有了自己的HelloWorld
控制台程式
當沒有指定指令時,HelloWorld預設輸出一螢幕訊息提示
Symfony Console
元件給我們提供的應用程式有幾個開箱可用的選項的和指令,例如help
,list
和--version
#解釋這個神奇的文件內容
OK,讓我們來看看我們的HelloWorld
檔案中的程式碼。
我們引入
autoload.php
以使用由composer
提供的自動載入以及控制台元件提供的各功能。
InputInterface
和OutputInterface
將使應用程式的輸入和輸出功能變得簡單,InputArgument
和InputOption
將幫助我們處理傳遞給我們HelloWorld應用程式的選項和參數。
require __DIR__.'/vendor/autoload.php'; use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface;
-
symphony/console
透過名稱實例化一個新的應用程式HelloWorld (v1.0.0)
,並註冊我們的greet
命令。(new Application('Hello World', '1.0.0')) ->register('greet')
-
我们添加一个可选的
name
参数(addArgument()
),并提供参数的简短描述。然后,我们使用这个addOption()
方法添加一个say
选项。请注意,选项始终是可选的,但您可以指定要传递的值,也可以仅仅将其用作指boolean标识。->addArgument('name', InputArgument::OPTIONAL, 'Name of the person') ->addOption('say', null, InputOption::VALUE_REQUIRED, 'Custom greeting')
-
setCode()
方法中的代码会包含我们应用程序的主逻辑,它会根据传递的参数和选项打印一个问候语到终端。我们监听$input
对象,使用getArgument()
和getOption()
辅助方法获取传递给greet
的选项和参数,然后,我们只需要检查传递了哪些参数或者选项,并相应的(使用$output
对象)向控制台输出打印问候语。这个writeln()
方法可以根据标签格式化文本,比如输出不同颜色的info
,error
和warning
。->setCode(function (InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $greeting = $input->getOption('say'); if (!empty($name) && !empty($greeting)) { return $output->writeln("<info>$greeting $name!</info>"); } else if (!empty($name)) { return $output->writeln("<info>Hello $name!</info>"); } else if (!empty($greeting)) { return $output->writeln("<info>$greeting World!</info>"); } else { return $output->writeln("<info>Hello World!</info>"); } })
-
最后我们引导应用程序
并调用他的
方法,以便他做好随时接收和处理greet
命令。->getApplication() ->run();
现在让我们在实例中看看我们HelloWorld程序
greet
不传递任何参数和选项
greet
有一个可选的name
参数
greet
使用say
选项自定义问候语
最后,
greet
自定义问候语和问候人
相关推荐:
以上是使用PHP快速建立命令列應用程式的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

随着Web应用程序的快速发展,越来越多的开发者将目光投向了各种新兴的Web开发框架和架构设计模式。其中一个备受瞩目的设计模式就是MVVM(ModelViewViewModel)架构模式。MVVM采用了一种现代化的设计模式,通过将UI和业务逻辑相分离,使得开发人员能够更好地管理和维护应用程序。此外,MVVM减少了不必要的耦合,提高了代码的可重用性和灵活性,

“msedge.exe”指的是“Microsoft Edge”网页浏览器软件;“Microsoft Edge”是由Microsoft开发的网页浏览器,该浏览器在2015年被正式命名,并且内置在了Windows10版本中;该浏览器与IE浏览器相比,Edge将支持现代浏览器功能,比如扩展。

卸载程序的文件名是“uninstall.exe”或“uninst.exe”,是用以协助使用者将软件自电脑中删除的一种电脑软件。使用方法:1、在文件资源管理器中挖掘并导航到应用程序EXE文件所在的文件路径;2、通过文件路径打开应用程序的安装目录,找到“uninstall.exe”文件;3、双击卸载文件“uninstall.exe”即可开始程序删除过程。

explorer.exe应用程序错误的解决办法:1、按下键盘上的“win”+“R”组合键,再打开的运行窗口中输入命“inetcpl.cpl”;2、在上方选择“高级”选项卡,在下方点击“重置”;3、在弹出来的窗口中,勾选“删除个人设置”,勾选后点击下面的“重置”。如果以上操作无法解决问题,请检查电脑是否有木马,这个时候建议重装系统,安装一个原版或者纯净版的系统。
![如何修复 Windows 11 上的应用程序无法打开问题 [已解决]](https://img.php.cn/upload/article/000/465/014/168300240866363.png)
微软最新发布的Windows11,已经证明是Windows10的更好版本,其结构变化、更人性化、重新排列的任务栏等。尽管Windows11是其中一个优秀的版本。许多Windows用户注意到他们的Windows11PC上存在一个不寻常的问题,他们无法启动大多数Windows11应用程序。无论他们尝试启动应用程序多少次,它只是简单地崩溃并且无法在系统上打开。突然发生这种情况可能有很多原因,下面列出了一些原因。Windows更新服务已停止。对系统的病毒攻击。系统上的用户帐户存

随着Internet的发展,越来越多的应用程序需要实现地图可视化展示。本文将介绍如何使用PHP和OpenLayers创建地图应用程序。一、OpenLayers介绍OpenLayers是一个JavaScript开源库,可以展示动态地图。除了展示标准的WMS、WFS和GoogleMaps,OpenLayers还可以展示自定义的地图,可以展示矢量数据,支持地图放

<p><strong>邮件应用程序</strong>是Windows11内置的一个非常有用的电子邮件客户端。它允许您从一个位置管理所有邮件帐户。虽然Mail应用程序非常有用,但有时可能需要重置,有时也需要重新安装,原因有多种。在本文中,我们将通过一些简单的步骤说明如何从Windows11轻松卸载Mail应用程序,以及如何轻松地从MicrosoftStore将其取回。</p>&l

随着全球定位系统(GPS)和卫星影像技术的飞速发展,地理信息系统(GIS)已经成为了一个重要的应用领域。GIS不仅限于地图制作和分析,也被广泛应用于环境管理、土地管理、城市规划等领域。而WebGIS应用程序的开发,可以使得用户在任何地点、任何时间、通过任何设备进行GIS数据的查询、分析和管理,具有极大的应用前景。Django是一个基于Python语言的We


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),