GildedRose-Refactoring-Kata/php/README.md
Pen-y-Fan 10d3cf7f5a Add PHP8
- update README.md with latest PHP information
- update composer.json to support PHP 7.3 to PHP8
  - active support for PHP 7.2 ended 6 Dec 2020
  - PHP8 was released 26-Nov-2020
  - update the dependencies
- PHPUnit now version 9.5 and config file updated
- ECS now version 9.3 and config file changed from `ecs.yaml` to `ecs.php`

ApprovalTest removed, in line with latest readme, all set for refactoring :)

Tested with PHP 7.3, 7.4 and 8.0 one failing "fixme" != "foo" test!
2021-05-03 16:02:47 +01:00

137 lines
3.2 KiB
Markdown

# GildedRose Kata - PHP Version
See the [top level readme](../README.md) for general information about this exercise. This is the PHP version of the
GildedRose Kata.
## Installation
The kata uses:
- [PHP 7.3 or 7.4 or 8.0+](https://www.php.net/downloads.php)
- [Composer](https://getcomposer.org)
Recommended:
- [Git](https://git-scm.com/downloads)
Clone the repository
```sh
git clone git@github.com:emilybache/GildedRose-Refactoring-Kata.git
```
or
```shell script
git clone https://github.com/emilybache/GildedRose-Refactoring-Kata.git
```
Install all the dependencies using composer
```shell script
cd ./GildedRose-Refactoring-Kata/php
composer install
```
## Dependencies
The project uses composer to install:
- [PHPUnit](https://phpunit.de/)
- [ApprovalTests.PHP](https://github.com/approvals/ApprovalTests.php)
- [PHPStan](https://github.com/phpstan/phpstan)
- [Easy Coding Standard (ECS)](https://github.com/symplify/easy-coding-standard)
- [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer/wiki)
## Folders
- `src` - contains the two classes:
- `Item.php` - this class should not be changed
- `GildedRose.php` - this class needs to be refactored, and the new feature added
- `tests` - contains the tests
- `GildedRoseTest.php` - starter test.
- Tip: ApprovalTests has been included as a dev dependency, see the PHP version of
the [Theatrical Players Refactoring Kata](https://github.com/emilybache/Theatrical-Players-Refactoring-Kata/)
for an example
- `Fixture`
- `texttest_fixture.php` this could be used by an ApprovalTests, or run from the command line
## Testing
PHPUnit is configured for testing, a composer script has been provided. To run the unit tests, from the root of the PHP
project run:
```shell script
composer test
```
A Windows a batch file has been created, like an alias on Linux/Mac (e.g. `alias pu="composer test"`), the same
PHPUnit `composer test` can be run:
```shell script
pu
```
### Tests with Coverage Report
To run all test and generate a html coverage report run:
```shell script
composer test-coverage
```
The test-coverage report will be created in /builds, it is best viewed by opening /builds/**index.html** in your
browser.
## Code Standard
Easy Coding Standard (ECS) is configured for style and code standards, **PSR-12** is used. The current code is not upto
standard!
### Check Code
To check code, but not fix errors:
```shell script
composer check-cs
```
On Windows a batch file has been created, like an alias on Linux/Mac (e.g. `alias cc="composer check-cs"`), the same
PHPUnit `composer check-cs` can be run:
```shell script
cc
```
### Fix Code
ECS provides may code fixes, automatically, if advised to run --fix, the following script can be run:
```shell script
composer fix-cs
```
On Windows a batch file has been created, like an alias on Linux/Mac (e.g. `alias fc="composer fix-cs"`), the same
PHPUnit `composer fix-cs` can be run:
```shell script
fc
```
## Static Analysis
PHPStan is used to run static analysis checks:
```shell script
composer phpstan
```
On Windows a batch file has been created, like an alias on Linux/Mac (e.g. `alias ps="composer phpstan"`), the same
PHPUnit `composer phpstan` can be run:
```shell script
ps
```
**Happy coding**!