lightster/named-sprintf

This package is abandoned and no longer maintained. No replacement package was suggested.

Enhance PHP sprintf with Python-style named parameters

v0.2.1 2019-03-11 06:01 UTC

This package is not auto-updated.

Last update: 2023-04-23 23:48:16 UTC


README

Build Status Test Coverage Code Climate

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";
?>