Upgrade to 3.3.6

This commit is contained in:
Bastian Allgeier
2020-04-27 15:39:33 +02:00
parent 1f2f39ce58
commit e64a392079
19 changed files with 806 additions and 3572 deletions

View File

@@ -81,186 +81,51 @@ return [
'Zend\\XmlRpc' => 'Laminas\\XmlRpc',
'ZendOAuth' => 'Laminas\\OAuth',
'Zend\\\\AuraDi\\\\Config' => 'Laminas\\\\AuraDi\\\\Config',
'Zend\\\\Authentication' => 'Laminas\\\\Authentication',
'Zend\\\\Barcode' => 'Laminas\\\\Barcode',
'Zend\\\\Cache' => 'Laminas\\\\Cache',
'Zend\\\\Captcha' => 'Laminas\\\\Captcha',
'Zend\\\\Code' => 'Laminas\\\\Code',
'ZendCodingStandard\\\\Sniffs' => 'LaminasCodingStandard\\\\Sniffs',
'ZendCodingStandard\\\\Utils' => 'LaminasCodingStandard\\\\Utils',
'Zend\\\\ComponentInstaller' => 'Laminas\\\\ComponentInstaller',
'Zend\\\\Config' => 'Laminas\\\\Config',
'Zend\\\\ConfigAggregator' => 'Laminas\\\\ConfigAggregator',
'Zend\\\\ConfigAggregatorModuleManager' => 'Laminas\\\\ConfigAggregatorModuleManager',
'Zend\\\\ConfigAggregatorParameters' => 'Laminas\\\\ConfigAggregatorParameters',
'Zend\\\\Console' => 'Laminas\\\\Console',
'Zend\\\\ContainerConfigTest' => 'Laminas\\\\ContainerConfigTest',
'Zend\\\\Crypt' => 'Laminas\\\\Crypt',
'Zend\\\\Db' => 'Laminas\\\\Db',
'Zend\\\\Di' => 'Laminas\\\\Di',
'Zend\\\\Diactoros' => 'Laminas\\\\Diactoros',
'ZendDiagnostics\\\\Check' => 'Laminas\\\\Diagnostics\\\\Check',
'ZendDiagnostics\\\\Result' => 'Laminas\\\\Diagnostics\\\\Result',
'ZendDiagnostics\\\\Runner' => 'Laminas\\\\Diagnostics\\\\Runner',
'Zend\\\\Dom' => 'Laminas\\\\Dom',
'Zend\\\\Escaper' => 'Laminas\\\\Escaper',
'Zend\\\\EventManager' => 'Laminas\\\\EventManager',
'Zend\\\\Feed' => 'Laminas\\\\Feed',
'Zend\\\\File' => 'Laminas\\\\File',
'Zend\\\\Filter' => 'Laminas\\\\Filter',
'Zend\\\\Form' => 'Laminas\\\\Form',
'Zend\\\\Http' => 'Laminas\\\\Http',
'Zend\\\\HttpHandlerRunner' => 'Laminas\\\\HttpHandlerRunner',
'Zend\\\\Hydrator' => 'Laminas\\\\Hydrator',
'Zend\\\\I18n' => 'Laminas\\\\I18n',
'Zend\\\\InputFilter' => 'Laminas\\\\InputFilter',
'Zend\\\\Json' => 'Laminas\\\\Json',
'Zend\\\\Ldap' => 'Laminas\\\\Ldap',
'Zend\\\\Loader' => 'Laminas\\\\Loader',
'Zend\\\\Log' => 'Laminas\\\\Log',
'Zend\\\\Mail' => 'Laminas\\\\Mail',
'Zend\\\\Math' => 'Laminas\\\\Math',
'Zend\\\\Memory' => 'Laminas\\\\Memory',
'Zend\\\\Mime' => 'Laminas\\\\Mime',
'Zend\\\\ModuleManager' => 'Laminas\\\\ModuleManager',
'Zend\\\\Mvc' => 'Laminas\\\\Mvc',
'Zend\\\\Navigation' => 'Laminas\\\\Navigation',
'Zend\\\\Paginator' => 'Laminas\\\\Paginator',
'Zend\\\\Permissions' => 'Laminas\\\\Permissions',
'Zend\\\\Pimple\\\\Config' => 'Laminas\\\\Pimple\\\\Config',
'Zend\\\\ProblemDetails' => 'Mezzio\\\\ProblemDetails',
'Zend\\\\ProgressBar' => 'Laminas\\\\ProgressBar',
'Zend\\\\Psr7Bridge' => 'Laminas\\\\Psr7Bridge',
'Zend\\\\Router' => 'Laminas\\\\Router',
'Zend\\\\Serializer' => 'Laminas\\\\Serializer',
'Zend\\\\Server' => 'Laminas\\\\Server',
'Zend\\\\ServiceManager' => 'Laminas\\\\ServiceManager',
'ZendService\\\\ReCaptcha' => 'Laminas\\\\ReCaptcha',
'ZendService\\\\Twitter' => 'Laminas\\\\Twitter',
'Zend\\\\Session' => 'Laminas\\\\Session',
'Zend\\\\SkeletonInstaller' => 'Laminas\\\\SkeletonInstaller',
'Zend\\\\Soap' => 'Laminas\\\\Soap',
'Zend\\\\Stdlib' => 'Laminas\\\\Stdlib',
'Zend\\\\Stratigility' => 'Laminas\\\\Stratigility',
'Zend\\\\Tag' => 'Laminas\\\\Tag',
'Zend\\\\Test' => 'Laminas\\\\Test',
'Zend\\\\Text' => 'Laminas\\\\Text',
'Zend\\\\Uri' => 'Laminas\\\\Uri',
'Zend\\\\Validator' => 'Laminas\\\\Validator',
'Zend\\\\View' => 'Laminas\\\\View',
'Zend\\\\Xml2Json' => 'Laminas\\\\Xml2Json',
'Zend\\\\XmlRpc' => 'Laminas\\\\XmlRpc',
'ZendHttp' => 'LaminasHttp', // class ZendHttpClientDecorator in zend-feed
'ZendModule' => 'LaminasModule', // class ZendModuleProvider in zend-config-aggregator-modulemanager
'a\\Zend\\' => 'a\\Zend\\',
'b\\Zend\\' => 'b\\Zend\\',
'c\\Zend\\' => 'c\\Zend\\',
'd\\Zend\\' => 'd\\Zend\\',
'e\\Zend\\' => 'e\\Zend\\',
'f\\Zend\\' => 'f\\Zend\\',
'g\\Zend\\' => 'g\\Zend\\',
'h\\Zend\\' => 'h\\Zend\\',
'i\\Zend\\' => 'i\\Zend\\',
'j\\Zend\\' => 'j\\Zend\\',
'k\\Zend\\' => 'k\\Zend\\',
'l\\Zend\\' => 'l\\Zend\\',
'm\\Zend\\' => 'm\\Zend\\',
'n\\Zend\\' => 'n\\Zend\\',
'o\\Zend\\' => 'o\\Zend\\',
'p\\Zend\\' => 'p\\Zend\\',
'q\\Zend\\' => 'q\\Zend\\',
'r\\Zend\\' => 'r\\Zend\\',
's\\Zend\\' => 's\\Zend\\',
't\\Zend\\' => 't\\Zend\\',
'u\\Zend\\' => 'u\\Zend\\',
'v\\Zend\\' => 'v\\Zend\\',
'w\\Zend\\' => 'w\\Zend\\',
'x\\Zend\\' => 'x\\Zend\\',
'y\\Zend\\' => 'y\\Zend\\',
'z\\Zend\\' => 'z\\Zend\\',
'a\\ZendOAuth\\' => 'a\\ZendOAuth\\',
'b\\ZendOAuth\\' => 'b\\ZendOAuth\\',
'c\\ZendOAuth\\' => 'c\\ZendOAuth\\',
'd\\ZendOAuth\\' => 'd\\ZendOAuth\\',
'e\\ZendOAuth\\' => 'e\\ZendOAuth\\',
'f\\ZendOAuth\\' => 'f\\ZendOAuth\\',
'g\\ZendOAuth\\' => 'g\\ZendOAuth\\',
'h\\ZendOAuth\\' => 'h\\ZendOAuth\\',
'i\\ZendOAuth\\' => 'i\\ZendOAuth\\',
'j\\ZendOAuth\\' => 'j\\ZendOAuth\\',
'k\\ZendOAuth\\' => 'k\\ZendOAuth\\',
'l\\ZendOAuth\\' => 'l\\ZendOAuth\\',
'm\\ZendOAuth\\' => 'm\\ZendOAuth\\',
'n\\ZendOAuth\\' => 'n\\ZendOAuth\\',
'o\\ZendOAuth\\' => 'o\\ZendOAuth\\',
'p\\ZendOAuth\\' => 'p\\ZendOAuth\\',
'q\\ZendOAuth\\' => 'q\\ZendOAuth\\',
'r\\ZendOAuth\\' => 'r\\ZendOAuth\\',
's\\ZendOAuth\\' => 's\\ZendOAuth\\',
't\\ZendOAuth\\' => 't\\ZendOAuth\\',
'u\\ZendOAuth\\' => 'u\\ZendOAuth\\',
'v\\ZendOAuth\\' => 'v\\ZendOAuth\\',
'w\\ZendOAuth\\' => 'w\\ZendOAuth\\',
'x\\ZendOAuth\\' => 'x\\ZendOAuth\\',
'y\\ZendOAuth\\' => 'y\\ZendOAuth\\',
'z\\ZendOAuth\\' => 'z\\ZendOAuth\\',
'a\\ZendService\\' => 'a\\ZendService\\',
'b\\ZendService\\' => 'b\\ZendService\\',
'c\\ZendService\\' => 'c\\ZendService\\',
'd\\ZendService\\' => 'd\\ZendService\\',
'e\\ZendService\\' => 'e\\ZendService\\',
'f\\ZendService\\' => 'f\\ZendService\\',
'g\\ZendService\\' => 'g\\ZendService\\',
'h\\ZendService\\' => 'h\\ZendService\\',
'i\\ZendService\\' => 'i\\ZendService\\',
'j\\ZendService\\' => 'j\\ZendService\\',
'k\\ZendService\\' => 'k\\ZendService\\',
'l\\ZendService\\' => 'l\\ZendService\\',
'm\\ZendService\\' => 'm\\ZendService\\',
'n\\ZendService\\' => 'n\\ZendService\\',
'o\\ZendService\\' => 'o\\ZendService\\',
'p\\ZendService\\' => 'p\\ZendService\\',
'q\\ZendService\\' => 'q\\ZendService\\',
'r\\ZendService\\' => 'r\\ZendService\\',
's\\ZendService\\' => 's\\ZendService\\',
't\\ZendService\\' => 't\\ZendService\\',
'u\\ZendService\\' => 'u\\ZendService\\',
'v\\ZendService\\' => 'v\\ZendService\\',
'w\\ZendService\\' => 'w\\ZendService\\',
'x\\ZendService\\' => 'x\\ZendService\\',
'y\\ZendService\\' => 'y\\ZendService\\',
'z\\ZendService\\' => 'z\\ZendService\\',
'a\\ZendXml\\' => 'a\\ZendXml\\',
'b\\ZendXml\\' => 'b\\ZendXml\\',
'c\\ZendXml\\' => 'c\\ZendXml\\',
'd\\ZendXml\\' => 'd\\ZendXml\\',
'e\\ZendXml\\' => 'e\\ZendXml\\',
'f\\ZendXml\\' => 'f\\ZendXml\\',
'g\\ZendXml\\' => 'g\\ZendXml\\',
'h\\ZendXml\\' => 'h\\ZendXml\\',
'i\\ZendXml\\' => 'i\\ZendXml\\',
'j\\ZendXml\\' => 'j\\ZendXml\\',
'k\\ZendXml\\' => 'k\\ZendXml\\',
'l\\ZendXml\\' => 'l\\ZendXml\\',
'm\\ZendXml\\' => 'm\\ZendXml\\',
'n\\ZendXml\\' => 'n\\ZendXml\\',
'o\\ZendXml\\' => 'o\\ZendXml\\',
'p\\ZendXml\\' => 'p\\ZendXml\\',
'q\\ZendXml\\' => 'q\\ZendXml\\',
'r\\ZendXml\\' => 'r\\ZendXml\\',
's\\ZendXml\\' => 's\\ZendXml\\',
't\\ZendXml\\' => 't\\ZendXml\\',
'u\\ZendXml\\' => 'u\\ZendXml\\',
'v\\ZendXml\\' => 'v\\ZendXml\\',
'w\\ZendXml\\' => 'w\\ZendXml\\',
'x\\ZendXml\\' => 'x\\ZendXml\\',
'y\\ZendXml\\' => 'y\\ZendXml\\',
'z\\ZendXml\\' => 'z\\ZendXml\\',
// class ZendAcl in zend-expressive-authorization-acl
'ZendAcl' => 'LaminasAcl',
'Zend\\Expressive\\Authorization\\Acl\\ZendAcl' => 'Mezzio\\Authorization\\Acl\\LaminasAcl',
// class ZendHttpClientDecorator in zend-feed
'ZendHttp' => 'LaminasHttp',
// class ZendModuleProvider in zend-config-aggregator-modulemanager
'ZendModule' => 'LaminasModule',
// class ZendRbac in zend-expressive-authorization-rbac
'ZendRbac' => 'LaminasRbac',
'Zend\\Expressive\\Authorization\\Rbac\\ZendRbac' => 'Mezzio\\Authorization\\Rbac\\LaminasRbac',
// class ZendRouter in zend-expressive-router-zendrouter
'ZendRouter' => 'LaminasRouter',
'Zend\\Expressive\\Router\\ZendRouter' => 'Mezzio\\Router\\LaminasRouter',
// class ZendViewRenderer in zend-expressive-zendviewrenderer
'ZendViewRenderer' => 'LaminasViewRenderer',
'Zend\\Expressive\\ZendView\\ZendViewRenderer' => 'Mezzio\\LaminasView\\LaminasViewRenderer',
'a\\Zend' => 'a\\Zend',
'b\\Zend' => 'b\\Zend',
'c\\Zend' => 'c\\Zend',
'd\\Zend' => 'd\\Zend',
'e\\Zend' => 'e\\Zend',
'f\\Zend' => 'f\\Zend',
'g\\Zend' => 'g\\Zend',
'h\\Zend' => 'h\\Zend',
'i\\Zend' => 'i\\Zend',
'j\\Zend' => 'j\\Zend',
'k\\Zend' => 'k\\Zend',
'l\\Zend' => 'l\\Zend',
'm\\Zend' => 'm\\Zend',
'n\\Zend' => 'n\\Zend',
'o\\Zend' => 'o\\Zend',
'p\\Zend' => 'p\\Zend',
'q\\Zend' => 'q\\Zend',
'r\\Zend' => 'r\\Zend',
's\\Zend' => 's\\Zend',
't\\Zend' => 't\\Zend',
'u\\Zend' => 'u\\Zend',
'v\\Zend' => 'v\\Zend',
'w\\Zend' => 'w\\Zend',
'x\\Zend' => 'x\\Zend',
'y\\Zend' => 'y\\Zend',
'z\\Zend' => 'z\\Zend',
// Expressive
'Zend\\Expressive' => 'Mezzio',
'Zend\\\\Expressive' => 'Mezzio',
'ZendAuthentication' => 'LaminasAuthentication',
'ZendAcl' => 'LaminasAcl',
'ZendRbac' => 'LaminasRbac',
@@ -285,49 +150,33 @@ return [
'ZF\\Rest' => 'Laminas\\ApiTools\\Rest',
'ZF\\Rpc' => 'Laminas\\ApiTools\\Rpc',
'ZF\\Versioning' => 'Laminas\\ApiTools\\Versioning',
'a\\ZF\\' => 'a\\ZF\\',
'b\\ZF\\' => 'b\\ZF\\',
'c\\ZF\\' => 'c\\ZF\\',
'd\\ZF\\' => 'd\\ZF\\',
'e\\ZF\\' => 'e\\ZF\\',
'f\\ZF\\' => 'f\\ZF\\',
'g\\ZF\\' => 'g\\ZF\\',
'h\\ZF\\' => 'h\\ZF\\',
'i\\ZF\\' => 'i\\ZF\\',
'j\\ZF\\' => 'j\\ZF\\',
'k\\ZF\\' => 'k\\ZF\\',
'l\\ZF\\' => 'l\\ZF\\',
'm\\ZF\\' => 'm\\ZF\\',
'n\\ZF\\' => 'n\\ZF\\',
'o\\ZF\\' => 'o\\ZF\\',
'p\\ZF\\' => 'p\\ZF\\',
'q\\ZF\\' => 'q\\ZF\\',
'r\\ZF\\' => 'r\\ZF\\',
's\\ZF\\' => 's\\ZF\\',
't\\ZF\\' => 't\\ZF\\',
'u\\ZF\\' => 'u\\ZF\\',
'v\\ZF\\' => 'v\\ZF\\',
'w\\ZF\\' => 'w\\ZF\\',
'x\\ZF\\' => 'x\\ZF\\',
'y\\ZF\\' => 'y\\ZF\\',
'z\\ZF\\' => 'z\\ZF\\',
'a\\ZF' => 'a\\ZF',
'b\\ZF' => 'b\\ZF',
'c\\ZF' => 'c\\ZF',
'd\\ZF' => 'd\\ZF',
'e\\ZF' => 'e\\ZF',
'f\\ZF' => 'f\\ZF',
'g\\ZF' => 'g\\ZF',
'h\\ZF' => 'h\\ZF',
'i\\ZF' => 'i\\ZF',
'j\\ZF' => 'j\\ZF',
'k\\ZF' => 'k\\ZF',
'l\\ZF' => 'l\\ZF',
'm\\ZF' => 'm\\ZF',
'n\\ZF' => 'n\\ZF',
'o\\ZF' => 'o\\ZF',
'p\\ZF' => 'p\\ZF',
'q\\ZF' => 'q\\ZF',
'r\\ZF' => 'r\\ZF',
's\\ZF' => 's\\ZF',
't\\ZF' => 't\\ZF',
'u\\ZF' => 'u\\ZF',
'v\\ZF' => 'v\\ZF',
'w\\ZF' => 'w\\ZF',
'x\\ZF' => 'x\\ZF',
'y\\ZF' => 'y\\ZF',
'z\\ZF' => 'z\\ZF',
'ZF\\\\Apigility' => 'Laminas\\\\ApiTools',
'ZF\\\\ApiProblem' => 'Laminas\\\\ApiTools\\\\ApiProblem',
'ZF\\\\AssetManager' => 'Laminas\\\\ApiTools\\\\AssetManager',
'ZF\\\\ComposerAutoloading' => 'Laminas\\\\ComposerAutoloading',
'ZF\\\\Configuration' => 'Laminas\\\\ApiTools\\\\Configuration',
'ZF\\\\ContentNegotiation' => 'Laminas\\\\ApiTools\\\\ContentNegotiation',
'ZF\\\\ContentValidation' => 'Laminas\\\\ApiTools\\\\ContentValidation',
'ZF\\\\DevelopmentMode' => 'Laminas\\\\DevelopmentMode',
'ZF\\\\Doctrine\\\\QueryBuilder' => 'Laminas\\\\ApiTools\\\\Doctrine\\\\QueryBuilder',
'ZF\\\\Hal' => 'Laminas\\\\ApiTools\\\\Hal',
'ZF\\\\HttpCache' => 'Laminas\\\\ApiTools\\\\HttpCache',
'ZF\\\\MvcAuth' => 'Laminas\\\\ApiTools\\\\MvcAuth',
'ZF\\\\OAuth2' => 'Laminas\\\\ApiTools\\\\OAuth2',
'ZF\\\\Rest' => 'Laminas\\\\ApiTools\\\\Rest',
'ZF\\\\Rpc' => 'Laminas\\\\ApiTools\\\\Rpc',
'ZF\\\\Versioning' => 'Laminas\\\\ApiTools\\\\Versioning',
'ApigilityModuleInterface' => 'ApiToolsModuleInterface',
'ApigilityProviderInterface' => 'ApiToolsProviderInterface',
'ApigilityVersionController' => 'ApiToolsVersionController',
@@ -489,8 +338,8 @@ return [
'zend-expressive-tooling' => 'mezzio-tooling',
// Apigility-related
"'zf-apigility'" => "'laminas-api-tools'",
'"zf-apigility"' => '"laminas-api-tools"',
"'zf-apigility'" => "'api-tools'",
'"zf-apigility"' => '"api-tools"',
'zf-apigility/' => 'api-tools/',
'zf-apigility-admin' => 'api-tools-admin',
'zf-content-negotiation' => 'api-tools-content-negotiation',
@@ -512,4 +361,11 @@ return [
'ZfApigilityDoctrineQueryCreateFilterManager' => 'LaminasApiToolsDoctrineQueryCreateFilterManager',
'zf-apigility-doctrine' => 'api-tools-doctrine',
'zf-development-mode' => 'laminas-development-mode',
'zf-doctrine-querybuilder' => 'api-tools-doctrine-querybuilder',
// 3rd party Apigility packages
'api-skeletons/zf-' => 'api-skeletons/zf-', // api-skeletons packages
'zf-oauth2-' => 'zf-oauth2-', // api-skeletons OAuth2-related packages
'ZF\\OAuth2\\Client' => 'ZF\\OAuth2\\Client', // api-skeletons/zf-oauth2-client
'ZF\\OAuth2\\Doctrine' => 'ZF\\OAuth2\\Doctrine', // api-skeletons/zf-oauth2-doctrine
];

View File

@@ -12,6 +12,18 @@ use ArrayObject;
use Composer\Autoload\ClassLoader;
use RuntimeException;
use function array_values;
use function class_alias;
use function class_exists;
use function explode;
use function file_exists;
use function interface_exists;
use function spl_autoload_register;
use function strlen;
use function strtr;
use function substr;
use function trait_exists;
/**
* Alias legacy Zend Framework project classes/interfaces/traits to Laminas equivalents.
*/

View File

@@ -8,8 +8,27 @@
namespace Laminas\ZendFrameworkBridge;
use function array_intersect_key;
use function array_key_exists;
use function array_pop;
use function array_push;
use function count;
use function in_array;
use function is_array;
use function is_callable;
use function is_int;
use function is_string;
class ConfigPostProcessor
{
/** @internal */
const SERVICE_MANAGER_KEYS_OF_INTEREST = [
'aliases' => true,
'factories' => true,
'invokables' => true,
'services' => true,
];
/** @var array String keys => string values */
private $exactReplacements = [
'zend-expressive' => 'mezzio',
@@ -62,15 +81,10 @@ class ConfigPostProcessor
: null;
},
// Aliases and invokables
function ($value, array $keys) {
static $keysOfInterest;
$keysOfInterest = $keysOfInterest ?: ['aliases', 'invokables'];
$key = array_pop($keys);
return in_array($key, $keysOfInterest, true) && is_array($value)
? [$this, 'replaceDependencyAliases']
// service- and pluginmanager handling
function ($value) {
return is_array($value) && array_intersect_key(self::SERVICE_MANAGER_KEYS_OF_INTEREST, $value) !== []
? [$this, 'replaceDependencyConfiguration']
: null;
},
@@ -182,7 +196,7 @@ class ConfigPostProcessor
$a[] = $value;
continue;
}
if (is_array($value) && is_array($a[$key])) {
$a[$key] = static::merge($a[$key], $value);
continue;
@@ -234,24 +248,119 @@ class ConfigPostProcessor
return $this->exactReplacements[$value];
}
private function replaceDependencyConfiguration(array $config)
{
$aliases = isset($config['aliases']) && is_array($config['aliases'])
? $this->replaceDependencyAliases($config['aliases'])
: [];
if ($aliases) {
$config['aliases'] = $aliases;
}
$config = $this->replaceDependencyInvokables($config);
$config = $this->replaceDependencyFactories($config);
$config = $this->replaceDependencyServices($config);
$keys = self::SERVICE_MANAGER_KEYS_OF_INTEREST;
foreach ($config as $key => $data) {
if (isset($keys[$key])) {
continue;
}
$config[$key] = is_array($data) ? $this->__invoke($data, [$key]) : $data;
}
return $config;
}
/**
* Rewrite dependency aliases array
*
* In this case, we want to keep the alias as-is, but rewrite the target.
*
* This same logic can be used for invokables, which are essentially just
* an alias map.
* We need also provide an additional alias if the alias key is a legacy class.
*
* @return array
*/
private function replaceDependencyAliases(array $aliases)
{
foreach ($aliases as $alias => $target) {
$aliases[$alias] = $this->replacements->replace($target);
if (! is_string($alias) || ! is_string($target)) {
continue;
}
$newTarget = $this->replacements->replace($target);
$newAlias = $this->replacements->replace($alias);
$notIn = [$newTarget];
$name = $newTarget;
while (isset($aliases[$name])) {
$notIn[] = $aliases[$name];
$name = $aliases[$name];
}
if ($newAlias === $alias && ! in_array($alias, $notIn, true)) {
$aliases[$alias] = $newTarget;
continue;
}
if (isset($aliases[$newAlias])) {
continue;
}
if (! in_array($newAlias, $notIn, true)) {
$aliases[$alias] = $newAlias;
$aliases[$newAlias] = $newTarget;
}
}
return $aliases;
}
/**
* Rewrite dependency invokables array
*
* In this case, we want to keep the alias as-is, but rewrite the target.
*
* We need also provide an additional alias if invokable is defined with
* an alias which is a legacy class.
*
* @return array
*/
private function replaceDependencyInvokables(array $config)
{
if (empty($config['invokables']) || ! is_array($config['invokables'])) {
return $config;
}
foreach ($config['invokables'] as $alias => $target) {
if (! is_string($alias)) {
continue;
}
$newTarget = $this->replacements->replace($target);
$newAlias = $this->replacements->replace($alias);
if ($alias === $target || isset($config['aliases'][$newAlias])) {
$config['invokables'][$alias] = $newTarget;
continue;
}
$config['invokables'][$newAlias] = $newTarget;
if ($newAlias === $alias) {
continue;
}
$config['aliases'][$alias] = $newAlias;
unset($config['invokables'][$alias]);
}
return $config;
}
/**
* @param mixed $value
* @return mixed Returns $value verbatim.
@@ -260,4 +369,66 @@ class ConfigPostProcessor
{
return $value;
}
private function replaceDependencyFactories(array $config)
{
if (empty($config['factories']) || ! is_array($config['factories'])) {
return $config;
}
foreach ($config['factories'] as $service => $factory) {
if (! is_string($service)) {
continue;
}
$replacedService = $this->replacements->replace($service);
$factory = is_string($factory) ? $this->replacements->replace($factory) : $factory;
$config['factories'][$replacedService] = $factory;
if ($replacedService === $service) {
continue;
}
unset($config['factories'][$service]);
if (isset($config['aliases'][$service])) {
continue;
}
$config['aliases'][$service] = $replacedService;
}
return $config;
}
private function replaceDependencyServices(array $config)
{
if (empty($config['services']) || ! is_array($config['services'])) {
return $config;
}
foreach ($config['services'] as $service => $serviceInstance) {
if (! is_string($service)) {
continue;
}
$replacedService = $this->replacements->replace($service);
$serviceInstance = is_array($serviceInstance) ? $this->__invoke($serviceInstance) : $serviceInstance;
$config['services'][$replacedService] = $serviceInstance;
if ($service === $replacedService) {
continue;
}
unset($config['services'][$service]);
if (isset($config['aliases'][$service])) {
continue;
}
$config['aliases'][$service] = $replacedService;
}
return $config;
}
}

View File

@@ -8,6 +8,11 @@
namespace Laminas\ZendFrameworkBridge;
use function array_merge;
use function str_replace;
use function strpos;
use function strtr;
class Replacements
{
/** @var string[] */
@@ -19,8 +24,17 @@ class Replacements
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

View File

@@ -6,4 +6,4 @@
* @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
*/
\Laminas\ZendFrameworkBridge\Autoloader::load();
Laminas\ZendFrameworkBridge\Autoloader::load();