PHP
Need help with dflydev-placeholder-resolver?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.
dflydev

Description

Provides a mechanism to resolve placeholders from an arbitrary data source.

131 Stars 3 Forks MIT License 18 Commits 3 Opened issues

Services available

Need anything else?

Placeholder Resolver

Given a data source representing key => value pairs, resolve placeholders like

${foo.bar}
to the value associated with the
foo.bar
key in the data source.

Placeholder Resolver is intended to be used at a relatively low level. For example, a configuration library could use Placeholder Resolver behind the scenes to allow for configuration values to reference other configuration values.

Example

conn.driver: mysql
conn.db_name: example
conn.hostname: 127.0.0.1
conn.username: root
conn.password: pa$$word

Given the appropriate

DataSourceInterface
implementation to provide the above data as a set of key => value pairs, the Placeholder Resolver would resolve the value of
$dsnPattern
to
mysql:dbname=example;host=127.0.0.1
.
$dsnPattern = '${conn.driver}:dbname=${conn.db_name};host=${conn.hostname}';
$dsn = $placeholderResolver->resolveValue($dsnPattern);
// mysql:dbname=example;host=127.0.0.1

Requirements

  • PHP 5.3+

Usage

use Dflydev\PlaceholderResolver\RegexPlaceholderResolver;

// YourDataSource implements Dflydev\PlaceholderResolver\DataSource\DataSourceInterface $dataSource = new YourDataSource;

// Create the placeholder resolver $placeholderResolver = new RegexPlaceholderResolver($dataSource);

// Start resolving placeholders $value = $placeholderResolver->resolvePlaceholder('${foo}');

The

RegexPlaceholderResolver
constructor accepts two additional arguments, a placeholder prefix and a placeholder suffix. The default placeholder prefix is
${
and the default placeholder suffix is
}
.

To handle placeholders that look like

 instead of 
${foo.bar}
, one would instantiate the class like this:
$placeholderResolver = new RegexPlaceholderResolver($dataSource, '');

Placeholders can recursively resolve placeholders. For example, given a data source with the following:

array(
    'foo' => 'FOO',
    'bar' => 'BAR',
    'FOO.BAR' => 'BAZ!',
);

The placeholder

${${foo}.${bar}}
would internally be resolved to
${FOO.BAR}
before being further resolved to
BAZ!
.

Resolved placeholders are cached using the

CacheInterface
. The default
Cache
implementation is used unless it is explicitly set on the Placeholder Resolver.
// YourCache implements Dflydev\PlaceholderResolver\Cache\CacheInterface
$cache = new YourCache;

$placeholderResolver->setCache($cache);

License

This library is licensed under the New BSD License - see the LICENSE file for details.

Community

If you have questions or want to help out, join us in the #dflydev channel on irc.freenode.net.

Not Invented Here

Much of the ideas behind this library came from Spring's Property Placeholder Configurer implementation.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.