Skip to content

Releases: thecodingmachine/graphqlite

v4.0.2

04 Feb 17:20
c3f524d
Compare
Choose a tag to compare

Bugfix release

Warning! This release contains a (minor) BC break about the name given to enum types.

Given the fact that enum types where almost non functionals in v4.0.1,
and given the fact it is unlikely they have been used until now, I'm exceptionnaly introducing
this BC break to introduce Enum types that are behaving in a more consistent way. See #235 for details.

  • #227 #233 Fixed "enum failed to work (most of the time) as output parameters"
  • #235 #232 Changed the way enums are named in the schema

Note: I do not have a clear visibility of the usage of this feature in the wild since the release of 4.0 a few weeks ago. My bet is noone will be impacted. If you are impacted by this breaking change, please fill an issue to let me know.

v4.0.1

13 Jan 13:24
4fe8fcb
Compare
Choose a tag to compare

Bugfix release

  • Fixing "a class declared with a bad namespace causes a crash" #216 #217 @moufmouf
    In particular this fixes problems with the Symfony bundle if the migrations directory is included in the "types" namespace

Improvements:

v4.0.0

08 Jan 09:29
9aba230
Compare
Choose a tag to compare

This is a complete refactoring from 3.x. While existing annotations are kept compatible, the internals have completely
changed.

New features:

Many extension points have been added

  • Added a "root type mapper" (useful to map scalar types to PHP types or to add custom annotations related to resolvers)
  • Added "field middlewares" (useful to add middleware that modify the way GraphQL fields are handled)- Added a "parameter type mapper" (useful to add customize parameter resolution or add custom annotations related to parameters)

New framework specific features:

Symfony:

  • The Symfony bundle now provides a "login" and a "logout" mutation (and also a "me" query)

Laravel:

Internals:

  • The FieldsBuilder class has been split in many different services (FieldsBuilder, TypeHandler, and a
    chain of root type mappers)
  • The FieldsBuilderFactory class has been completely removed.
  • Overall, there is not much in common internally between 4.x and 3.x. 4.x is much more flexible with many more hook points
    than 3.x. Try it out!

v3.1.1

14 Oct 14:45
c04dfef
Compare
Choose a tag to compare

Improvements:

  • Making GraphQLite compatible with PHP 7.4 with no deprecations #147 #150 #153 . Thanks @JensArctiq

v3.1.0

14 Oct 07:24
Compare
Choose a tag to compare

New feature:

v3.0.1

05 Sep 13:38
8711488
Compare
Choose a tag to compare

Improvement:

  • Looking for annotations only in public methods #128

v3.0.0

26 Apr 12:25
1fa0023
Compare
Choose a tag to compare

First stable release of GraphQLite

GraphQLite is PHP library that allows you to write your GraphQL queries in simple-to-write controllers.

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

After several months of work, we are very happy to announce the availability of GraphQLite v3.0.

If you are wondering where are v1 and v2... yeah... GraphQLite is a fork of "thecodingmachine/graphql-controllers" that already had a v1 and a v2. But so much has changed that it deserved a new name!

Check out the documentation

Basic example

First, declare a query in your controller:

class ProductController
{
    /**
     * @Query()
     */
    public function product(string $id): Product
    {
        // Some code that looks for a product and returns it.
    }
}

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

/**
 * @Type()
 */
class Product
{
    /**
     * @Field()
     */
    public function getName(): string
    {
        return $this->name;
    }
    // ...
}

That's it, you're good to go 🎉! Query and enjoy!

{
  product(id: 42) {
    name
  }
}