Enhance PHP sprintf with Python-style named parameters

Enhance PHP sprintf with Python-style named parameters

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 LstrSprintfSprintf;

require_once __DIR__ . '/vendor/autoload.php';

$sprintf = new Sprintf();

echo $sprintf->sprintf(
    "Hello %(first_name)s %(last_name)sn",
    ['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 accuracyn",
    ['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.

CliBundle Middleware

The CliBundle middleware is a series of middleware that is bundled
together to allow for easy command line string generation.

<?php

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

Source

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *