41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Laminas\ZendFrameworkBridge;
|
||
|
|
||
|
use function array_merge;
|
||
|
use function str_replace;
|
||
|
use function strpos;
|
||
|
use function strtr;
|
||
|
|
||
|
class Replacements
|
||
|
{
|
||
|
/** @var string[] */
|
||
|
private $replacements;
|
||
|
|
||
|
public function __construct(array $additionalReplacements = [])
|
||
|
{
|
||
|
$this->replacements = array_merge(
|
||
|
require __DIR__ . '/../config/replacements.php',
|
||
|
$additionalReplacements
|
||
|
);
|
||
|
|
||
|
// Provide multiple variants of strings containing namespace separators
|
||
|
foreach ($this->replacements as $original => $replacement) {
|
||
|
if (false === strpos($original, '\\')) {
|
||
|
continue;
|
||
|
}
|
||
|
$this->replacements[str_replace('\\', '\\\\', $original)] = str_replace('\\', '\\\\', $replacement);
|
||
|
$this->replacements[str_replace('\\', '\\\\\\\\', $original)] = str_replace('\\', '\\\\\\\\', $replacement);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $value
|
||
|
* @return string
|
||
|
*/
|
||
|
public function replace($value)
|
||
|
{
|
||
|
return strtr($value, $this->replacements);
|
||
|
}
|
||
|
}
|