lightster / named-sprintf
Enhance PHP sprintf with Python-style named parameters
Installs: 51 582
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: ^7.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: ^6
This package is not auto-updated.
Last update: 2023-04-23 23:48:16 UTC
README
Enhance PHP sprintf with Python-style named parameters
Requirements
- PHP >= 7.0
- Composer
Installation
composer require lightster/named-sprintf:dev-master
Basic Usage
<?php use Lstr\Sprintf\Sprintf; require_once __DIR__ . '/vendor/autoload.php'; $sprintf = new Sprintf(); echo $sprintf->sprintf( "Hello %(first_name)s %(last_name)s\n", ['first_name' => 'Matt', 'last_name' => 'Light'] ); ?>
Type Usage
Similar to PHP's built-in sprintf
, types and format options can be
passed after the named parameter:
<?php $sprintf = new Sprintf(); echo $sprintf->sprintf( "PI is approximately %(pi).5f, or %(pi).8f if you need more accuracy\n", ['pi' => pi()] ); echo $sprintf->sprintf( "The type is optional and defaults to string (e.g. 's'): %(name)\n", ['name' => 'Typeless!'] ); ?>
Middleware
Values can be processed before they are formatted by passing middleware
to the constructor of Sprintf
. The middleware can be any sort of
PHP callable and will be passed the parameter name that is about to be
formatted and a callable that gives the middleware access to all of
the values passed to $sprintf->sprintf()
.
The below example takes any parameter passed in as an array and converts
it to a space-delimited string of words before passing the value to the
sprintf
string formatter:
<?php $sprintf = new Sprintf( function ($name, callable $values) { $value = $values($name); if (is_array($value)) { return implode(' ', $value); } return $value; } ); echo $sprintf->sprintf( "Middleware %(action_words) to pre-process %(what)!\n", [ 'action_words' => ['can', 'be', 'used'], 'what' => 'parameters', ] ); ?>
Reusable Middleware
Reusable, chainable middleware can be developed by extending the AbstractInvokable class. Some reusable middleware is shipped with named-sprintf.
Cli\Bundle Middleware
The Cli\Bundle middleware is a series of middleware that is bundled together to allow for easy command line string generation.
<?php use Lstr\Sprintf\Middleware\Cli\Bundle as CliBundle; $sprintf = new Sprintf(new CliBundle()); echo $sprintf->sprintf( "php bin/some-cli %(sub-command) %(long-options) %(short-options)", [ 'sub-command' => 'commit', 'long-options' => [ 'message' => 'Showing off a CLI command', 'author' => 'Matt', ], 'short-options' => [ 'a' => null, ], ] ) . "\n"; ?>