Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/thecodingmachine/graphqlite

Use PHP Attributes/Annotations to declare your GraphQL API
https://github.com/thecodingmachine/graphqlite

annotations graphql laravel php symfony

Last synced: 6 days ago
JSON representation

Use PHP Attributes/Annotations to declare your GraphQL API

Awesome Lists containing this project

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](https://github.com/thecodingmachine/graphqlite-bundle) and [Laravel](https://github.com/thecodingmachine/graphqlite-laravel) integrations available!
* Comes with batteries included :battery:: queries, mutations, subscriptions, mapping of arrays/iterators, file uploads, extendable types and more!

## Basic example

First, declare a mutation in your controller:

```php
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:

```php
#[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 :tada: mutate away!

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

Want to learn more? Head to the [documentation](https://graphqlite.thecodingmachine.io/)!

## Contributing

Contributions are welcomed via pull requests. If you'd like to discuss prior to submitting a PR, consider a [discussion](https://github.com/thecodingmachine/graphqlite/discussions). If it's a bug/issue, you can [submit an issue](https://github.com/thecodingmachine/graphqlite/issues) first.

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