citizen63000/easy-api-core 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

citizen63000/easy-api-core

Composer 安装命令:

composer require citizen63000/easy-api-core

包简介

Symfony bundle providing core utilities for REST API development

README 文档

README

A Symfony bundle providing core utilities for REST API development. This bundle offers tools for entity configuration, form serialization, command abstractions, and various utilities to accelerate API development.

Installation in a third-party project

1. Installation via Composer

composer require citizen63000/easy-api-core

2. Bundle Configuration

Add the bundle to config/bundles.php:

<?php

return [
    // ... other bundles
    EasyApiCore\EasyApiCore::class => ['all' => true],
];

3. Configuration

Create the file config/packages/easy_api_core.yaml:

easy_api_core:
    user_class: 'App\Entity\User'    # Your user entity class

Features

Entity Configuration

Load and introspect entity metadata from Doctrine annotations/attributes or database schema:

use EasyApiCore\Util\Entity\EntityConfigLoader;

// From entity class
$config = EntityConfigLoader::createEntityConfigFromEntityFullName(App\Entity\Product::class);

// From database table
$config = EntityConfigLoader::createEntityConfigFromDatabase($entityManager, 'Product', 'products');

Form Serialization

Serialize Symfony forms for frontend consumption (useful for dynamic form generation):

use EasyApiCore\Util\Forms\FormSerializer;

$serializer = new FormSerializer($formFactory, $router, $doctrine);
$form = $formFactory->create(ProductType::class);
$serializedForm = $serializer->normalize($form);

Abstract Command

Base class for console commands with Doctrine and container access:

use EasyApiCore\Command\AbstractCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class MyCommand extends AbstractCommand
{
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $repository = $this->getRepository(Product::class);
        $this->writeLog($output, 'Processing...');

        return Command::SUCCESS;
    }
}

Core Utilities Trait

Provides shortcuts for common operations in controllers or services:

use EasyApiCore\Util\CoreUtilsTrait;

class MyService
{
    use CoreUtilsTrait;

    public function saveProduct(Product $product): void
    {
        $this->persistAndFlush($product);
    }
}

String Utilities

Case conversion and pluralization helpers:

use EasyApiCore\Util\String\CaseConverter;
use EasyApiCore\Util\String\Inflector;

// Case conversion
$camelCase = CaseConverter::convertSnakeCaseToCamelCase('my_variable'); // myVariable
$snakeCase = CaseConverter::convertCamelCaseToSnakeCase('myVariable');  // my_variable

// Pluralization
$plural = Inflector::pluralize('product');  // products
$singular = Inflector::singularize('products'); // product

API Problem Responses

Standardized error responses following RFC 7807:

use EasyApiCore\Util\ApiProblem;
use Symfony\Component\HttpFoundation\Response;

$error = new ApiProblem(Response::HTTP_NOT_FOUND, 'Product not found');

Available Components

Component Description
AbstractCommand Base console command with Doctrine access
CoreUtilsTrait Common utilities for services/controllers
EntityConfigLoader Entity metadata introspection
DatabaseConfigurationLoader Database schema introspection
FormSerializer Symfony form serialization
CaseConverter String case conversion utilities
Inflector Word pluralization/singularization
ApiProblem Standardized API error responses
MimeUtil MIME type utilities
DirectoryManipulator Directory operations

Local Development with Docker

Prerequisites

  • Docker and Docker Compose installed

Installation for Development

  1. Clone the repository:

    git clone https://github.com/citizen63000/easy-api-core.git
    cd easy-api-core
  2. Start the Docker environment:

    docker compose up -d
  3. Install dependencies:

    docker compose exec app composer install

Development Commands

Check code style

docker compose exec app vendor/bin/php-cs-fixer fix --dry-run --diff

Check code style

docker compose exec app composer clean-code

Access the container for debugging

docker compose exec app sh

Development Project Structure

easy-api-core/
├── EasyApiCore.php              # Bundle definition
├── DependencyInjection/         # Symfony configuration
│   ├── EasyApiCoreExtension.php
│   └── Configuration.php
├── Framework/                   # Source code
│   ├── Command/                 # Console commands
│   │   └── AbstractCommand.php
│   ├── Model/                   # Data models
│   │   ├── EntityConfiguration.php
│   │   └── EntityField.php
│   ├── Form/                    # Form types
│   │   └── Type/
│   │       └── AbstractApiType.php
│   └── Util/                    # Utilities
│       ├── CoreUtilsTrait.php
│       ├── ApiProblem.php
│       ├── Entity/              # Entity utilities
│       ├── Forms/               # Form utilities
│       ├── String/              # String utilities
│       └── File/                # File utilities
├── docker-compose.yml           # Docker configuration
├── Dockerfile                   # PHP Docker image
└── README.md

Contribution workflow

  1. Create a feature branch
  2. Develop your feature
  3. Check code style with php-cs-fixer
  4. Commit changes
  5. Create a Pull Request

Compatibility

  • PHP >= 8.3
  • Symfony 6.4, 7.x, 8.0
  • Doctrine ORM 2.7+ / 3.x

Support

  • Issues: GitHub Issues
  • Documentation: This README and docblocks in the code

License

MIT License - see LICENSE file for details.

citizen63000/easy-api-core 适用场景与选型建议

citizen63000/easy-api-core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 405 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 08 月 24 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「symfony」 「rest」 「api」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 citizen63000/easy-api-core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 citizen63000/easy-api-core 我们能提供哪些服务?
定制开发 / 二次开发

基于 citizen63000/easy-api-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 405
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 6
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-08-24