* Remove grumphp
It reports so many violations, I don't think anyone paid attention
to them in some time.
Also there's code sniffer which is:
- installed
- works
- and also run on travis explicitly
Here are the current violations:
```
$ vendor/bin/grumphp run
PHP Deprecated: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in /Users/mfischer/src/laravel-ide-helper/vendor/phpro/grumphp/src/Locator/ConfigurationFile.php on line 75
Deprecated: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in /Users/mfischer/src/laravel-ide-helper/vendor/phpro/grumphp/src/Locator/ConfigurationFile.php on line 75
GrumPHP is sniffing your code!✘
Running task 2/2: Phpunit... ✔
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▄███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▀█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▀▀▓▓▓▓▓▓▓▓▓▓▓▓█▀▀▀▀▀▀▀▀▀▀▀▀▀▀████████████▄
▄███████ ██████████
███████▀ ▀▀▀▀▀▄ ▄▀▀▀▀▀ █████ ▀
▐████ ▐██ ▐██ ████▌
████▌ ███
▌██▌ ▄▄ ▄▄ ▐███
███ ▄▄▄▄▄▄▄▄▄▄▄▄ ▐███
██▄ ▐███████████████████████████
█▀███████████▀ ▀▀███████████
██████████▄███████▄███████████
▐█████████████████████████████
█████████████████████████████
██ █████████████████████▐██▀
▀ ▐███████████████████▌ ▐▀
████▀████████▀▐███
▀█▌ ▐█████ ██▌
██▀ ▐▀
██████████████████████████████████
█░░░░░░▀█▀░░░░░░▀█░░░░░░▀█▀░░░░░▀█
█░░▐█▌░░█░░░██░░░█░░██░░░█░░░██░░█
█░░▐█▌░░█░░░██░░░█░░██░░░█░░░██░░█
█░░▐█▌░░█░░░██░░░█░░░░░░▄█░░▄▄▄▄▄█
█░░▐█▌░░█░░░██░░░█░░░░████░░░░░░░█
█░░░█░░░█▄░░░░░░▄█░░░░████▄░░░░░▄█
██████████████████████████████████
FILE: ...Users/mfischer/src/laravel-ide-helper/resources/views/helper.php
----------------------------------------------------------------------
FOUND 46 ERRORS AND 3 WARNINGS AFFECTING 24 LINES
----------------------------------------------------------------------
23 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0
| | found
23 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
24 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 0
24 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
24 | ERROR | [x] Newline required after opening brace
24 | ERROR | [x] Closing brace must be on a line by itself
24 | ERROR | [x] Each PHP statement must be on a line by itself
26 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 0
26 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0
| | found
26 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
26 | ERROR | [x] Blank line found at start of control structure
28 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
29 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
30 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0
| | found
30 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
30 | ERROR | [x] Blank line found at start of control structure
32 | ERROR | [x] Line indented incorrectly; expected at least 12
| | spaces, found 8
34 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found
34 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
34 | ERROR | [x] Blank line found at start of control structure
37 | ERROR | [x] Closing brace indented incorrectly; expected 9
| | spaces, found 12
39 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found
39 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
51 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0
| | found
51 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
53 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 0
53 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0
| | found
53 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
53 | ERROR | [x] Blank line found at start of control structure
55 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
55 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
55 | WARNING | [ ] Line exceeds 120 characters; contains 180
| | characters
56 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0
| | found
56 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
59 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found
59 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
59 | ERROR | [x] Blank line found at start of control structure
62 | ERROR | [x] Closing brace indented incorrectly; expected 13
| | spaces, found 16
64 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found
64 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
70 | ERROR | [x] Closing brace indented incorrectly; expected 4
| | spaces, found 0
76 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found
76 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
78 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 0
82 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found
82 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
109 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
112 | WARNING | [ ] Line exceeds 120 characters; contains 141
| | characters
113 | WARNING | [ ] Line exceeds 120 characters; contains 139
| | characters
----------------------------------------------------------------------
PHPCBF CAN FIX THE 46 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------
FILE: /Users/mfischer/src/laravel-ide-helper/resources/views/meta.php
----------------------------------------------------------------------
FOUND 10 ERRORS AFFECTING 6 LINES
----------------------------------------------------------------------
14 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
17 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 0
17 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0 found
17 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
23 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
24 | ERROR | [x] Spaces must be used to indent lines; tabs are not
| | allowed
26 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 0
26 | ERROR | [x] Expected 1 space(s) after FOREACH keyword; 0 found
26 | ERROR | [x] Expected 1 space(s) after closing parenthesis;
| | found 0
29 | ERROR | [x] Spaces must be used to indent lines; tabs are not
| | allowed
----------------------------------------------------------------------
PHPCBF CAN FIX THE 10 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------
Time: 260ms; Memory: 12MB
```
* Remove scrutinizer/ocular
Looks unused, also not used on travis
* Remove StyleCI
Isn't enabled
* Revert "Remove grumphp"
This reverts commit a69696f0
* grumphp: add whitelist to ignore the resources/ folder
* grumphp: per .editorconf the indentation is 4 spaces, not 2
* phpunit: use dedicate `Tests` namespace for tests
* tests: replace phpunit with orchestra/testbench
* phpunit: ignore result cache file
* phpunit: adapt test for newer version
* tests: add base testcase class with a helper to run/assert commands
* tests: add test for ide-helper:eloquent
* travis: add global default variables
* travis: disable xdebug, speeds up running tests
* travis: convert php versions to build matrix for environment vars
* travis: only run phpcs/phpunit when the env vars signal it
However phpcs only runs with one test combination from the matrix,
not necessary to execute it every time.
Laravel 5.8 introduced a feature to support a custom date class via
`Date::use()`, see https://github.com/laravel/framework/pull/25320
When e.g. using `Date::use(CarbonImmutable)` in a project, it means
all date casts are not returning `\Illuminate\Support\Carbon` anymore
but `\Carbon\CarbonImmutable`, which means all the generated type hints
for dates are now wrong.
This change tries to be still backwards compatible with Laravel < 5.8
which do not have the Date facade.
* Update readme.md
In version 2.6.5, this commit https://github.com/barryvdh/laravel-ide-helper/commit/f8a8cb18e0a42ae4131b7ed865fe792f9b34630c made it so library's consumer no longer need to pull in `doctrine/dbal` manually. I think we should mention that in the readme file as well. Although I'm not sure if it adds any value to the file itself or not.
* Remove note about doctrine/dbal from readme.md
* x to Many relationships are detected via a `Many` keyword in the relationship object class name
* reason: example: `belongsTo` was incorrectly recognized as `belongsToMany`
* adds `@property-read int|null $x2Many_relationship_method_name_count` model class docBlock comment
* when model makes use of `withCount` or `loadCount` there is a property on the resource `$instance->relationship_method_count` that states the count of related models
* can be `NULL` when `withCount` or `loadCount` aren't used
While installing this for my project, I didn't see the `--dev` instructions until I was literally editing this README for a pull request.
Since laravel-ide-helper is only designed for development purposes, let's just remove the superfluous entry altogether. Smart devs who for some crazy reason need it on prod will know to remove the `--dev`, while less knowledgeable devs won't shoot themselves in the foot accidentally.
See my comment https://github.com/barryvdh/laravel-ide-helper/pull/765#issuecomment-471014271:
The change in #765 made anonymous functions get reflected with `ReflectionMethod` instead of `ReflectionFunction`, which makes it lose the doc comment. This means that the generated helpers are missing their return types. This is because Closure is also an object and callable.
To fix it, Closure should be excluded from that new condition.
Macros can be used with invokable classes, like so.
```
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Response;
class ResponseMacroServiceProvider extends ServiceProvider
{
public function boot()
{
Response::macro('foo', new Foo());
}
}
class Foo
{
public function __invoke()
{
return 'foobar';
}
}
```
When running `ide-helper:generate` the following fatal error was thrown.
``` Symfony\Component\Debug\Exception\FatalThrowableError : ReflectionFunction::__construct() expects parameter 1 to be string, object given```
This commit fixes this error.
* Fix missing doc-block.
* Fixes a bug where a missing DocBlock caused errors.
* Change Option Shorthand to W
Because it is not allowed to have two char shorthands for options.
* Revert code refactoring.
* Fix copied config header.