teamneusta/jms-serializer-extension-bundle

扩展JMS Serializer Bundle,以便在忽略命名空间前缀的情况下加载序列化器配置

2.0.0 2024-05-15 14:09 UTC

This package is auto-updated.

Last update: 2024-09-15 14:50:45 UTC


README

JMS Serializer Bundle允许配置多个目录以提供序列化器配置文件。这些目录使用PHP类命名空间进行配置。如果您旨在为您的包的类提供配置文件,并且应用程序打算覆盖其中一些文件,可能会出现命名空间冲突。此包简化了配置目录以提供无命名空间前缀的通配符配置的过程。

安装

  1. 要求包

    composer require teamneusta/jms-serializer-extension-bundle
  2. 启用包

    将Bundle添加到您的config/bundles.php

    \Neusta\JmsSerializerExtensionBundle\NeustaJmsSerializerExtensionBundle::class => ['all' => true],

配置

以下配置片段说明了此包的使用。配置键my_bundle和app的命名空间前缀配置为忽略。配置的目录可以包含任何所需的序列化器配置;PHP类命名空间不予考虑。配置键another_bundle提供JMS Serializer Bundle的CompanyThingCoolBundle包的默认配置。

jms_serializer:
  metadata:
    directories:
      my_bundle:
        path: '@MyBundle/../config/serializer'
        namespace_prefix: 'my_bundle'
      app:
        path: '%kernel.project_dir%/config/serializer'
        namespace_prefix: 'app'
      another_bundle:
        namespace_prefix: "Company\\Thing\\CoolBundle"
        path: "@CompanyThingCoolBundle/../config/serializer"

neusta_jms_serializer_extension:
  non_prefixed_namespaces:
    my_bundle: ~
    app: ~

覆盖加载优先级

可以为每个命名空间提供一个priority。如果没有提供优先级,则假设为0。当找到多个类的配置文件时,使用优先级最高的文件。

例如,考虑以下配置。如果给定类的配置文件在my_bundleanother_bundle中都找到,则使用my_bundle中的配置,因为它具有更高的优先级。

jms_serializer:
  metadata:
    directories:
      my_bundle:
        path: '@MyBundle/../config/serializer'
        namespace_prefix: 'my_bundle'
      another_bundle:
        namespace_prefix: "Company\\Thing\\CoolBundle"
        path: "@CompanyThingCoolBundle/../config/serializer"

neusta_jms_serializer_extension:
  non_prefixed_namespaces:
    my_bundle:
      priority: 10
    another_bundle: ~

贡献

欢迎您为任何错误、功能请求或其他想法提出问题。

请在创建大型pull请求之前创建一个问题。

本地开发

要在本地机器上进行开发,需要供应商依赖项。

bin/composer install

我们使用composer脚本来运行我们的主要质量工具。它们可以通过bin/composer文件执行。

bin/composer cs:fix
bin/composer phpstan

对于测试,有一个不同的脚本,它包括数据库设置。

bin/run-tests