PHP命令行界面(CLI)框架是為了提供更好的控制臺應用程序開發而設計的。 它主要依賴于命令行參數解析器和路由,提供命令行腳本支持以及其他一些功能。
例如,我們可以使用Symfony Console組件構建簡單而優雅的命令行應用程序。Symfony Console提供了一組工具來創建交互式和非交互式命令行應用程序。一個例子是使用Symfony Console組件創建一個回報錯誤情況的命令行程序。
require __DIR__.'/vendor/autoload.php';
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class ReportErrorCommand extends Command
{
protected function configure()
{
$this
->setName('report-error')
->setDescription('Outputs an error report');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
// Fetch error information
$error = error_get_last();
// Build report
$message = sprintf('Error occurred in %s on line %d: %s', $error['file'], $error['line'], $error['message']);
// Output report
$output->writeln($message);
}
}
// Create new console application
$app = new Application();
// Add the report-error command to the application
$app->add(new ReportErrorCommand());
// Run the console application
$app->run();
運行這個應用程序: php myconsoleapp.php report-error, 它將輸出任何錯誤情況。
另一個CLI框架是Laravel Zero。他是一個自包含的零配置框架,旨在提供最佳概念的基礎上,讓你可以專注于程序的功能。比如下面這個代碼段是使用Laravel Zero創建一個命令行程序:
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class Install extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'install {--name= : Installation name}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Install the Laravel project or package';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->info('Installing Laravel...');
$name = $this->option('name');
if(!empty($name)) {
$name = $this->ask('What is your project\'s name?');
}
$this->info('Generating composer.json...');
File::put('composer.json', '{
"name": "'.strtolower(str_replace(' ', '-', $name)).'",
"description": "",
"keywords": [],
"homepage": "",
"type": "project",
"license": "",
"authors": [
{
"name": "",
"email": ""
}
],
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"fideloper/proxy": "~3.0"
},
"require-dev": {
"phpunit/phpunit": "~5.0"
}
}');
$this->info('Publishing configuration...');
$this->call('vendor:publish', [
'--provider' =>'Illuminate\\Foundation\\Providers\\FoundationServiceProvider',
'--tag' =>'config',
]);
$this->info('Generating key...');
$this->call('key:generate');
$this->info('Installation complete!');
}
}
運行這個應用程序: php myconsoleapp to install,它將安裝Laravel項目。
這些例子展示了命令行界面(CLI)框架的基本功能,以及如何使用Symfony Console和Laravel Zero來實現它們。無論你選擇哪個框架,CLI工具都可能成為你的工具庫中非常有用的一部分。
上一篇php cli 無限
下一篇php cli 應用