webonyx/graphql-php
Spec-compliant GraphQL server implementation for PHP, based on graphql-js. Build schemas, types, resolvers, validation and execution with full October 2021 spec support (Sept 2025 in progress). Foundation library used by many PHP frameworks.
SingleFieldSubscription validation to expand fragments before counting root fields, reject introspection fields, and reject [@skip](https://github.com/skip)/[@include](https://github.com/include) at the subscription root https://github.com/webonyx/graphql-php/pull/1930[@specifiedBy](https://github.com/specifiedBy) built-in directive and ScalarType::$specifiedByURL property https://github.com/webonyx/graphql-php/pull/1913OverlappingFieldsCanBeMerged validation through inline fragments https://github.com/webonyx/graphql-php/security/advisories/GHSA-fc86-6rv6-2jpmFix "Cannot traverse an already closed generator" in Schema::getTypeMap() https://github.com/webonyx/graphql-php/pull/1903
AmpFutureAdapter for integration with AMPHP v3 https://github.com/webonyx/graphql-php/pull/1900OverlappingFieldsCanBeMerged validation https://github.com/webonyx/graphql-php/security/advisories/GHSA-68jq-c3rv-pcrr[@oneOf](https://github.com/oneOf) coercion https://github.com/webonyx/graphql-php/pull/1891assertValid() https://github.com/webonyx/graphql-php/pull/1886types for per-schema built-in scalar overrides, not typeLoader https://github.com/webonyx/graphql-php/pull/1884parseLiteral not called on per-schema built-in scalar overrides for inline arguments https://github.com/webonyx/graphql-php/pull/1880types config or typeLoader, without global side effects https://github.com/webonyx/graphql-php/pull/1869Type::builtInScalars() and Type::BUILT_IN_SCALAR_NAMES aligning with GraphQL spec terminology https://github.com/webonyx/graphql-php/pull/1869Directive::builtInDirectives() and Directive::isBuiltInDirective() aligning with GraphQL spec terminology https://github.com/webonyx/graphql-php/pull/1869Type::overrideStandardTypes() in favor of per-schema scalar overrides https://github.com/webonyx/graphql-php/pull/1869Type::getStandardTypes() in favor of Type::builtInScalars() https://github.com/webonyx/graphql-php/pull/1869Type::STANDARD_TYPE_NAMES in favor of Type::BUILT_IN_SCALAR_NAMES https://github.com/webonyx/graphql-php/pull/1869Directive::getInternalDirectives() in favor of Directive::builtInDirectives() https://github.com/webonyx/graphql-php/pull/1869Directive::isSpecifiedDirective() in favor of Directive::isBuiltInDirective() https://github.com/webonyx/graphql-php/pull/1869is_array and instanceof checks https://github.com/webonyx/graphql-php/pull/1845$result in ReferenceExecutor https://github.com/webonyx/graphql-php/pull/1780Printer::printDescription https://github.com/webonyx/graphql-php/pull/1824SyncPromise backwards compatibility https://github.com/webonyx/graphql-php/pull/1823Deferred execution https://github.com/webonyx/graphql-php/pull/1805GraphQL\Deferred::create() in favor of constructor https://github.com/webonyx/graphql-php/pull/1805Lexer name tokenization https://github.com/webonyx/graphql-php/pull/1813\Stringable interface https://github.com/webonyx/graphql-php/pull/1810Deferred memory usage optimization https://github.com/webonyx/graphql-php/pull/1790Deferred memory usage with incremental queue processing https://github.com/webonyx/graphql-php/pull/1790HasFieldsTypeImplementation https://github.com/webonyx/graphql-php/pull/1783AbstractType::resolveValue before AbstractType::resolveType https://github.com/webonyx/graphql-php/pull/1781resolveValue method to Interface and Union types https://github.com/webonyx/graphql-php/pull/1776NonNull to Type::nonNull() https://github.com/webonyx/graphql-php/pull/1757Type::getNamedType() return type https://github.com/webonyx/graphql-php/pull/1756Node with a NodeList in Visitor https://github.com/webonyx/graphql-php/pull/1754NodeVisitor return type by allowing Node https://github.com/webonyx/graphql-php/pull/1752Printer fully static https://github.com/webonyx/graphql-php/pull/1749Printer::doPrint https://github.com/webonyx/graphql-php/pull/1748isOneOf directive when extending input objects with SchemaExtender https://github.com/webonyx/graphql-php/pull/1745includeDeprecated to introspection field __Directive.args https://github.com/webonyx/graphql-php/pull/1738/commits/0dd03675dc7c971abfad86cafaf2da353778529fincludeDeprecated arguments in introspection fields non-nullable with default value false https://github.com/webonyx/graphql-php/pull/1738/commits/851ddb55d722035904191705b6d62ba56950680cisOneOf optional in Introspection query https://github.com/webonyx/graphql-php/pull/1737isOneOf to Introspection query https://github.com/webonyx/graphql-php/pull/1729[@oneOf](https://github.com/oneOf) directive in SchemaPrinter https://github.com/webonyx/graphql-php/pull/1727[@oneOf](https://github.com/oneOf) input object directive - enables "input unions" where exactly one field must be provided https://github.com/webonyx/graphql-php/pull/1715How can I help you explore Laravel packages today?