If your contribution requires significant or breaking changes, or if you plan to propose a major new feature, we recommend you to create an issue with a brief proposal and discuss it with us first.
For smaller contributions just use this workflow:
- Fork the project.
- Add your features and or bug fixes.
- Add tests. Tests are important for us.
- Check your changes using
composer check
. - Add an entry to the Changelog's Unreleased section.
- Send a pull request.
git clone <your-fork-url>
cd graphql-php
composer install
We ensure the code works and continues to work as expected with PHPUnit.
Run unit tests:
composer test
Some tests have an annotation such as @see it('<description>')
.
It references a matching test in the graphql-js implementation.
When porting tests that utilize the dedent()
test utility from graphql-js
,
we instead use the PHP native nowdoc
syntax.
If the string contents are in a specific grammar, use an appropriate tag such as GRAPHQL
, PHP
or JSON
:
self::assertSomePrintedOutputExactlyMatches(
<<<'GRAPHQL'
type Foo {
bar: Baz
}
GRAPHQL,
$output
);
We check and fix the coding standard with PHP_CodeSniffer.
Run the inspections:
composer lint
Apply automatic code style fixes:
composer fix
We validate code correctness with PHPStan.
Run static analysis:
composer stan
Regenerate the PHPStan baseline:
composer baseline
We benchmark performance critical code with PHPBench.
Check performance:
composer bench
We document this library by rendering the Markdown files in docs with MkDocs.
Generate the class reference docs:
composer docs