Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/thecodingmachine/graphqlite
- Owner: thecodingmachine
- License: mit
- Created: 2019-01-29T13:09:22.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-26T23:34:31.000Z (16 days ago)
- Last Synced: 2024-11-29T13:11:25.285Z (13 days ago)
- Topics: annotations, graphql, laravel, php, symfony
- Language: MDX
- Homepage: https://graphqlite.thecodingmachine.io
- Size: 93 MB
- Stars: 558
- Watchers: 21
- Forks: 98
- Open Issues: 43
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-graphql - GraphQLite - Framework agnostic library that allows you to write GraphQL server by annotating your PHP classes. (Libraries / PHP Libraries)
- awesome-graphql - GraphQLite - Framework agnostic library that allows you to write GraphQL server by annotating your PHP classes. (Libraries / PHP Libraries)
README
GraphQLite
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.
## 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.