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.
composer require citizen63000/easy-api-core
Add the bundle to config/bundles.php:
<?php
return [
// ... other bundles
EasyApiCore\EasyApiCore::class => ['all' => true],
];
Create the file config/packages/easy_api_core.yaml:
easy_api_core:
user_class: 'App\Entity\User' # Your user entity class
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');
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);
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;
}
}
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);
}
}
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
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');
| 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 |
Clone the repository:
git clone https://github.com/citizen63000/easy-api-core.git
cd easy-api-core
Start the Docker environment:
docker compose up -d
Install dependencies:
docker compose exec app composer install
docker compose exec app vendor/bin/php-cs-fixer fix --dry-run --diff
docker compose exec app composer clean-code
docker compose exec app sh
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
php-cs-fixerMIT License - see LICENSE file for details.
How can I help you explore Laravel packages today?