digicomp/flowobjectresolving

提供了一种简单且标准的方式,用于解析具有良好名称的服务类

2.1.0 2023-10-26 17:58 UTC

This package is auto-updated.

Last update: 2024-09-21 11:24:18 UTC


README

Build status

此包旨在帮助您的依赖注入(DI)将易于阅读的人类名称解析为类名,这些类名应该被使用。

此外,它允许您获取所有这些良好名称的列表,如果您想的话,可以从CommandController中列出它们。

class DefaultResolver
{
    use ResolverTrait;

    protected static function getManagedInterface(): string
    {
        return RequestPatternInterface::class;
    }

    protected static function getManagedNamespace(string $packageKey): string
    {
        return 'Security\\RequestPattern\\';
    }
}

例如,此类可以通过简单的getAvailableNames列出以下内容:

['Neos.Flow:ControllerObjectName', 'Neos.Flow:CsrfProtection', 'Neos.Flow:Host',
 'Neos.Flow:Ip', 'Neos.Flow:Uri']

现在,可以使用(new DefaultResolver)->resolveObjectName('Neos.Flow:ControllerObjectName')等代码将这些插件解析为实例。对于解析器来说,getDefaultNamespacegetDefaultPackage是可选的,如果没有重写,将解析为使用该特质的类。

getDefaultPackageKey中的ObjectManagerInterface存在,因为这个函数使用了flow的CompileStatic功能。

名称按以下方案构建:{packageKey}{namespace}{name} - 如果您需要为不同的包使用不同的命名空间,您应该实现自己的条件,或者甚至使用getManagedNamespace中的配置 - 您将获得packageKey作为参数。

不遵循默认模式的类仍然可以用于,并且将列出其完全限定名(FQCN)。