PHPackages                             alxmsl/cli - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. alxmsl/cli

ActiveLibrary[CLI &amp; Console](/categories/cli)

alxmsl/cli
==========

Simple library for php-cli script options support

v2.0.1(10y ago)532.2k↓14%16Apache-2.0PHP

Since May 24Pushed 10y ago1 watchersCompare

[ Source](https://github.com/alxmsl/Cli)[ Packagist](https://packagist.org/packages/alxmsl/cli)[ RSS](/packages/alxmsl-cli/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (7)Used By (6)

Cli
===

[](#cli)

This is simple set of classes for support php-cli script options

Advantages
----------

[](#advantages)

1. Lightweight - only two classes for work with command options
2. Events helps to up your code flexibility
3. Self-autoloading. You need to include only one file
4. Independed namespace helps to use Cli on different projects and frameworks

Posibilities
------------

[](#posibilities)

You can set short or long option name, while call php-cli script. The same lines may be equal

```
php script.php -a               # short name of option apply
php script.php --apply

```

You can use boolean or string option values

```
php script.php --apply          # option 'apply' has boolean value
php script.php --change=all -a  # option 'change' has string value 'all', and option 'aplly' has boolean value true
php script.php --change=all     # option 'aplly' has boolean value false. It's not set

```

If you use string values, that containing spaces, quote its

```
php script.php --change="all the world"

```

You can create required options or not

```
php script.php -s Test          # option 'script' is required

```

...if you call 'script.php' without 's' option, you will see

```
php script.php
PHP Fatal error:  Uncaught exception 'Cli\RequiredOptionException' in /root/CommandPosix.php:79

```

On each option you can add callback (see Usage Example). Callback function can use first parameter as an option name, second as value

```
$Command->appendParameter($Option, function($name, $value) {
    echo 'option \'' . $name . '\' value is \'' . $value . '\'' . "\n";
});

```

you will see

```
php script.php --script=noscript
option 'script' value is 'noscript'

```

Usage example
-------------

[](#usage-example)

```
// Firstly include base class
include('../source/Cli.php');

use \Cli\CommandPosix,
    \Cli\Option;

// Just create command line option instances
$OptionHelp = new Option('help', 'h', 'show help screen option');

// Create command instance
$Command = new CommandPosix();

// Append created option for help to command
$Command->appendHelpParameter('show help screen option');

// Append one required option. And...
$Command->appendParameter(new Option('option', 'o', 'some option', Option::TYPE_BOOLEAN, true));

// ...just parse the command
$Command->parse();

```

If you will need the exception when required options value will not set, try:

```
$Command->parse(true);

```

You will see something like this:

```
alxmsl:~/cli/tests$ php usage.php
PHP Fatal error:  Uncaught exception 'Cli\RequiredOptionException' with message 'option' in /home/alxmsl/cli/source/CommandPosix.php:92
Stack trace:
#0 /home/alxmsl/cli/tests/usage.php(27): Cli\CommandPosix->parse(true)
#1 {main}
  thrown in /home/alxmsl/sources/cli/CommandPosix.php on line 92

```

License
-------

[](#license)

Copyright 2015 Alexey Maslov

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

```
http://www.apache.org/licenses/LICENSE-2.0

```

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity34

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~136 days

Total

4

Last Release

3967d ago

Major Versions

v1.0.2 → v2.0.02015-06-29

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/950057?v=4)[Alexey Maslov](/maintainers/alxmsl)[@alxmsl](https://github.com/alxmsl)

---

Top Contributors

[![alxmsl](https://avatars.githubusercontent.com/u/950057?v=4)](https://github.com/alxmsl "alxmsl (25 commits)")

---

Tags

clicommand-lineposix

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/alxmsl-cli/health.svg)

```
[![Health](https://phpackages.com/badges/alxmsl-cli/health.svg)](https://phpackages.com/packages/alxmsl-cli)
```

###  Alternatives

[symfony/console

Eases the creation of beautiful and testable command line interfaces

9.8k1.1B11.3k](/packages/symfony-console)[nunomaduro/collision

Cli error handling for console/command-line PHP applications.

4.6k331.8M8.5k](/packages/nunomaduro-collision)[nategood/commando

PHP CLI Commando Style

8123.3M38](/packages/nategood-commando)[minicli/minicli

Experimental micro CLI framework for PHP

1.1k382.5k47](/packages/minicli-minicli)[nunomaduro/laravel-console-menu

Laravel Console Menu is an output method for your Laravel/Laravel Zero commands.

815412.0k48](/packages/nunomaduro-laravel-console-menu)[nunomaduro/laravel-console-task

Laravel Console Task is a output method for your Laravel/Laravel Zero commands.

2582.1M11](/packages/nunomaduro-laravel-console-task)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
