Dependency injection container abstraction; PHP CLI made easy; various basic utilities.

2.3.1 2020-06-09 15:01 UTC


Main features

Dependency injection container abstraction

As Wikipedia sums it up:

Ironically, dependency injection can encourage dependence on a dependency injection framework.

Dependency is a simple tool for mitigating dependency of a particular injection container.
Wraps a PSR-11 or Pimple container or creates it's own lightweight PSR-11 container.

PHP CLI (command line/console) made easy

CliCommand + CliCommandInterface
specify a simple way of defining PHP CLI commands, and auto-generate --help output.


  • resolves CLI input arguments and options
  • maps to a CliCommand and executes it
  • lists --help of all defined commands
  • finds document root
Utils' own CLI commands
# List all commands in the system, and their providers.
php cli.php -h

# One command's help.
php cli.php utils-xxx -h

# (RISKY) Execute included PHP script.
php cli.php utils-execute include-file


Time extends the native DateTime class to fix shortcomings and defects,
and provide more, simpler and safer getters and setters.


  • is stringable (sic!), to ISO-8601
  • JSON serializes to string ISO-8601 with timezone marker
  • freezable
  • enhanced timezone awareness
  • diff (diffConstant, that is) works correctly across differing timezones
  • simpler and safer getters and setters

It's inspired by Javascript's Date class, and secures better Javascript interoperability
by stresssing and facilitating timezone awareness, and by JSON serializing to ISO-8601 timestamp string;
not a phoney Javascript object representing a PHP DateTime's inner properties.


The abstract Explorable class provides simple means for making protected members of an object readable,
and optionally mutable via dedicated methods.

Odds and ends

Unicode abstracts mbstring.

Sanitize delivers basic string sanitizers and converters.

PathList hides the complexity of using FilesystemIterators.

Utils parses ini strings/files, and delivers a range of other handy methods.

Bootstrap::prepareDependencies() for easy dependency setup.
NB: Bootstrap::prepareDependencies() requires packages not listed among composer requirements:
Cache, Config, (optional) JsonLog, Inspect, Locale, Validate.


Development requirements