Skip to content
This repository has been archived by the owner on Apr 12, 2023. It is now read-only.
/ named-sprintf Public archive

Enhance PHP sprintf with Python-style named parameters

License

Notifications You must be signed in to change notification settings

lightster/named-sprintf

Repository files navigation

named-sprintf

Build Status Test Coverage Code Climate

Enhance PHP sprintf with Python-style named parameters

Requirements

  • PHP >= 5.5
  • 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',
    ]
);
?>

About

Enhance PHP sprintf with Python-style named parameters

Resources

License

Stars

Watchers

Forks

Packages

No packages published