GraphQL in PHP made easy.
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.
- 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!
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!
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.