Create CONTRIBUTING.md
This commit is contained in:
parent
08b01502a5
commit
0d5b938a94
1 changed files with 38 additions and 0 deletions
38
.github/CONTRIBUTING.md
vendored
Normal file
38
.github/CONTRIBUTING.md
vendored
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
Vibes:
|
||||||
|
======
|
||||||
|
Generally-useful extensions are great, custom extensions and themes just for one specific DIY site
|
||||||
|
are welcome too. I (Shish) will probably only actively maintain and add features to the extensions
|
||||||
|
which I personally use, but if you submit some code of your own I will try to keep it updated and
|
||||||
|
compatible with any API changes that come along. If your code comes with unit tests, this type of
|
||||||
|
maintenance is much more likely to be successful :)
|
||||||
|
|
||||||
|
Testing:
|
||||||
|
========
|
||||||
|
Github Actions will be running three sets of automated tests, all of which you can run for yourself:
|
||||||
|
|
||||||
|
- `./vendor/bin/php-cs-fixer fix` - keeping a single style for the whole project
|
||||||
|
- `./vendor/bin/phpunit --config tests/phpunit.xml` - unit testing
|
||||||
|
- `./vendor/bin/phpstan analyse --memory-limit 1G -c tests/phpstan.neon` - type checking
|
||||||
|
|
||||||
|
The `main` branch is locked down so it can't accept pull requests that don't pass these
|
||||||
|
|
||||||
|
Testing FAQs:
|
||||||
|
=============
|
||||||
|
|
||||||
|
## What the heck is "Method XX::YY() return type has no value type specified in iterable type array."?
|
||||||
|
|
||||||
|
PHP arrays are very loosely defined - they can be lists or maps, with integer or string
|
||||||
|
(or non-continuous integer) keys, with any type of object (or multiple types of object).
|
||||||
|
This isn't great for type safety, so PHPStan is a bit stricter, and requires you to
|
||||||
|
specify what type of array it is and what it contains. You can do this with PHPdoc comments,
|
||||||
|
like:
|
||||||
|
|
||||||
|
```php
|
||||||
|
/**
|
||||||
|
* @param array<string, Cake> $cakes -- a mapping like ["sponge" => new Cake()]
|
||||||
|
* @return array<Ingredient> -- a list like [new Ingredient("flour"), new Ingredient("egg")]
|
||||||
|
*/
|
||||||
|
function get_ingredients(array $cakes, string $cake_name): array {
|
||||||
|
return $cakes[$cake_name]->ingredients;
|
||||||
|
}
|
||||||
|
```
|
Reference in a new issue