llm-agents/json-schema-mapper

JSON Schema to PHP Class Mapper for LLM Agents

Maintainers

👁 butschster

Package info

github.com/llm-agents-php/schema-mapper

pkg:composer/llm-agents/json-schema-mapper

Statistics

Installs: 355

Dependents: 6

Suggesters: 0

Stars: 4

Open Issues: 0

1.2.0 2025-08-22 06:42 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 68a7fba1036ed6bbe740116b0d7c1c8b586a23e6

This package is auto-updated.

Last update: 2026-06-13 13:30:54 UTC


README

👁 PHP
👁 Latest Version on Packagist
👁 Total Downloads

This package is a super handy JSON Schema Mapper for the LLM Agents project.

What's it all about?

This package gives you a nifty SchemaMapper that can:

  • Convert PHP classes to JSON schemas
  • Turn JSON data into PHP objects

Class Diagram

Here's a quick look at how the main components fit together:

classDiagram
 class SchemaMapperInterface {
 <<interface>>
 +toJsonSchema(string $class): array
 +toObject(string $json, ?string $class): object
 }
 class SchemaMapper {
 -generator: JsonSchemaGenerator
 -mapper: TreeMapper
 +toJsonSchema(string $class): array
 +toObject(string $json, ?string $class): object
 }
 SchemaMapperInterface <|.. SchemaMapper
 SchemaMapper --> JsonSchemaGenerator
 SchemaMapper --> TreeMapper
Loading

Getting Started

Installation

First things first, let's get this package installed:

composer require llm-agents/json-schema-mapper

Setting it up in Spiral

If you're using the Spiral framework (and why wouldn't you be? It's awesome!), you'll need to register the bootloader.

Here's how:

  1. Open up your app/src/Application/Kernel.php file.
  2. Add the LLM\Agents\JsonSchema\Mapper\Integration\Spiral\SchemaMapperBootloader to the defineBootloaders() method:
class Kernel extends \Spiral\Framework\Kernel
{
 // ...

 public function defineBootloaders(): array
 {
 return [
 // ... other bootloaders ...
 \LLM\Agents\JsonSchema\Mapper\Integration\Spiral\SchemaMapperBootloader::class,
 ];
 }
}

And that's it! The bootloader will take care of registering all the necessary components for you.

Setting it up in Laravel

If you're using the Laravel framework, you'll need to register the Service provider.

Here's how:

Just register the LLM\Agents\JsonSchema\Mapper\Integration\Laravel\SchemaMapperServiceProvider

And that's it! The service provider will take care of registering all the necessary components for you.

How to Use It

Converting a PHP Class to JSON Schema

Let's say you have a User class and you want to get its JSON schema:

use LLM\Agents\JsonSchema\Mapper\SchemaMapperInterface;

class UserController
{
 public function __construct(
 private SchemaMapperInterface $schemaMapper
 ) {}

 public function getUserSchema(): array
 {
 return $this->schemaMapper->toJsonSchema(User::class);
 }
}

Converting JSON to a PHP Object

Got some JSON data that you want to turn into a PHP object? No problem:

use LLM\Agents\JsonSchema\Mapper\SchemaMapperInterface;

class UserService
{
 public function __construct(
 private SchemaMapperInterface $schemaMapper
 ) {}

 public function createUserFromJson(string $json): User
 {
 return $this->schemaMapper->toObject($json, User::class);
 }
}

Contributing

We'd love your help to make this package even better! Here's how you can contribute:

  1. Fork the repository
  2. Write some awesome code
  3. Create a new Pull Request

Please make sure your code follows PSR-12 coding standards and include tests for any new features.

License

This package is open-sourced software licensed under the MIT license. Feel free to use it, modify it, and share it!

That's all, folks! If you have any questions or run into any issues, don't hesitate to open an issue on GitHub.