Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Centralize Input/Output and Data Class Logic in Metadata

未关闭
#7,907 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
45/100
Issue 类型
重构
描述清晰度
基本清楚
活跃度
冷清
技术栈
php

调研方向

首先,将 ObjectMapperProvider、SerializerContextBuilder 和 OpenApiFactory 中的回退逻辑与 Metadata、Operation 和 ApiResource 类进行比较。确定应如何集中处理输入、输出和可选数据类的行为,然后验证受影响的使用方是否使用一致的回退,并确认兼容性或发布决策已记录在案。

由索引模型根据 Issue 内容生成。

描述

Currently, across the codebase (e.g., in ObjectMapperProvider, SerializerContextBuilder, OpenApiFactory), we frequently encounter the pattern of checking for a custom input/output class and falling back to the resource class if not defined:

$class = $operation->getInput()['class'] ?? $operation->getClass();
// or
$class = $operation->getOutput()['class'] ?? $operation->getClass();

To simplify the codebase and avoid repetitive logic, I propose introducing helper methods directly in the Metadata (and thus Operation and ApiResource) classes to handle these fallbacks.

Proposed Changes

The idea is to add the following methods:

  1. getInputClass(): ?string: Returns the custom input class if defined, otherwise falls back to getClass().
  2. getOutputClass(): ?string: Returns the custom output class if defined, otherwise falls back to getClass().
  3. getDataClass(): ?string: (Optional/For discussion) A method to handle the mapped entity class with a similar fallback mechanism, specifically useful when working with DTOs and Data Mappers.
Benefits
  • Dry Code: Centralizes the logic in one place.
  • Simplification: Reduces boilerplate in providers, processors, and factories.
  • Consistency: Ensures the fallback logic is applied identically everywhere.
Considerations

This changes metadata handling significantly. Cleaner API, but assess whether it requires a major (breaking) release or can remain optional.

主要语言
PHP
星标
2.6k
派生
984
平均合并
1 天 17 小时
30 天内合并 PR
84

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

api-platform/core 的其他 Issue

查看 api-platform/core 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。