Add readme
This commit is contained in:
parent
de8ad06df9
commit
5ce49cee02
71
README.md
Normal file
71
README.md
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# Reason
|
||||||
|
|
||||||
|
Sometimes, you need to know not only can be things done or not,
|
||||||
|
but also _why_ things can be done.
|
||||||
|
|
||||||
|
## Reason status
|
||||||
|
|
||||||
|
Status describes current state of reason. It must be convertible to integer value -
|
||||||
|
status weight. Status with higher weight worse then smaller weight.
|
||||||
|
(Make sense for appending and joining.)
|
||||||
|
|
||||||
|
## Appending reasons (orX)
|
||||||
|
|
||||||
|
Reasons can be appended to other reasons. It operations can be matched with `logical or`.
|
||||||
|
Reason with the lowest weight wins. If two reasons have same weight, those messages
|
||||||
|
will be merged.
|
||||||
|
|
||||||
|
```php
|
||||||
|
// weight: 1
|
||||||
|
// messages: foo, bar
|
||||||
|
$first = new Reason(...);
|
||||||
|
|
||||||
|
// weight: 2
|
||||||
|
// messages: baz
|
||||||
|
$second = new Reason(...);
|
||||||
|
|
||||||
|
// weight: 1
|
||||||
|
// messages: foo, bar
|
||||||
|
$firstOrSecond = $first->orX($second);
|
||||||
|
|
||||||
|
// weight: 1
|
||||||
|
// messages: foobar
|
||||||
|
$third = new Reason(...);
|
||||||
|
|
||||||
|
// weight: 1
|
||||||
|
// messages: foo, bar, foobar
|
||||||
|
$firstOrThird = $first->orX($third);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Joining reasons (andX)
|
||||||
|
|
||||||
|
Same behavior as appending, but reason with the highest weight wins.
|
||||||
|
Looks like `logical and` operation.
|
||||||
|
|
||||||
|
```php
|
||||||
|
// weight: 1
|
||||||
|
// messages: foo, bar
|
||||||
|
$first = new Reason(...);
|
||||||
|
|
||||||
|
// weight: 2
|
||||||
|
// messages: baz
|
||||||
|
$second = new Reason(...);
|
||||||
|
|
||||||
|
// weight: 2
|
||||||
|
// messages: baz
|
||||||
|
$firstAndSecond = $first->andX($second);
|
||||||
|
|
||||||
|
// weight: 1
|
||||||
|
// messages: foobar
|
||||||
|
$third = new Reason(...);
|
||||||
|
|
||||||
|
// weight: 1
|
||||||
|
// messages: foo, bar, foobar
|
||||||
|
$firstAndThird = $first->andX($third);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
```
|
||||||
|
$ vendor/bin/phpunit
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user