thecodingmachine/graphqlite

Write your GraphQL queries in simple to write controllers (using webonyx/graphql-php).

Package info

github.com/thecodingmachine/graphqlite

Language:MDX

pkg:composer/thecodingmachine/graphqlite

Statistics

Installs: 3 329 284

Dependents: 36

Suggesters: 0

Stars: 573

Open Issues: 28

v8.3.0 2026-04-27 21:39 UTC

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 23ebef4ad0faf8ffa4c98eafef34114eccbd059b

  • David NΓ©grier <d.negrier.woop@thecodingmachine.com>

README

πŸ‘ GraphQLite logo

GraphQLite

GraphQL in PHP made easy.

Documentation Β· Contributing

πŸ‘ Latest Stable Version
πŸ‘ Total Downloads
πŸ‘ License
πŸ‘ Continuous Integration
πŸ‘ Code Coverage

A GraphQL library for PHP that allows you to use attributes (or annotations) to define your schema and write your queries and mutations using simple-to-write controllers.

Features

  • Create a complete GraphQL API by simply annotating your PHP classes
  • Framework agnostic, but with Symfony and Laravel integrations available!
  • Comes with batteries included πŸ”‹: queries, mutations, subscriptions, mapping of arrays/iterators, file uploads, extendable types and more!

Basic example

First, declare a mutation in your controller:

class ProductController
{
 #[Mutation]
 public function updateProduct(Product $product): Product
 {
 // Some code that gets and updates a Product
 return $product;
 }
}

Then, annotate the Product class to declare what fields are exposed to the GraphQL API:

#[Type]
#[Input(update: true)]
class Product
{
 #[Field]
 public function getName(): string
 {
 return $this->name;
 }
 
 #[Field]
 public function setName(string $name): void
 {
 $this->name = $name;
 }
 
 // ...
}

That's it, you're good to go πŸŽ‰ mutate away!

{
 updateProduct(product: {
 name: 'John Doe'
 }) {
 name
 }
}

Want to learn more? Head to the documentation!

Contributing

Contributions are welcomed via pull requests. If you'd like to discuss prior to submitting a PR, consider a discussion. If it's a bug/issue, you can submit an issue first.

All PRs should have sufficient test coverage for any additions or changes. PRs will not be merged without these.