PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Ladislav Vondracek   Parex Commander   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: Parex Commander
Run console programs using callback functions
Author: By
Last change:
Date: 1 month ago
Size: 2,898 bytes
 

 

Contents

Class file image Download

Parex Commander

Latest Version License

Parex Commander is a lightweight PHP library designed to simplify the creation of interactive CLI applications. It provides a structured and intuitive way to define commands, handle input/output, and manage the overall flow of your application.

Built on top of the Parex library.

Key Features

  • Command-Based Structure: Organize your CLI application into logical commands, each with its own set of arguments and options.
  • Simplified Input/Output: Easily handle user input and format output using the built-in IO system.
  • Extensible: Easily extend the core functionality with your own custom commands and features.
  • Clean and Readable Code: Designed with a focus on code clarity and maintainability.

Installation

You can install Parex Commander via Composer:

bash composer require lawondyss/parex-commander

Core Components

ParexCommander

The ParexCommander class is the heart of your CLI application. It's responsible for:

  • Registering and managing commands.
  • Parsing user input and routing it to the appropriate command.
  • Handling the overall execution flow.

Example:

// Handlers
function day(DynamicResult $result, IO $io): void { $io->writeLn('??'); }
function night(DynamicResult $result, IO $io): void { $io->writeLn('?'); }

// Commands of Day & Night application
$commander = new ParexCommander('Day & Night', 'Something small and simple');
$commander->addCommand('day', day(...));
$commander->addCommand('night', night(...));

$commander->run();

See example for more.

Command

The Command class represents a single command within your application. It allows you to:

  • Define the command's name, description, and version.
  • Specify the arguments and options that the command accepts.
  • Implement the command's logic in a handler function or invokable class.

Example:

$commander->addCommand('migrate', migrate(...), 'Run missing migrations.')
          ->addOptional('id', help: 'Specifies a particular migration.', multiple: true)
          ->addFlag('dry-run', help: 'It simulates running the migration, but does not execute SQL.');

Or you can use the class on its own, see example for more.

IO

The IO class provides a simple and consistent way to interact with the user. It handles:

  • Writing output to the console.
  • Asking questions.
  • Requires confirmation.
  • Offers a selection of.

Better see example.

Note

All examples are executable, just try them out ?